Statische Importanweisungen für Mockito-Konstrukte finden
Lesezeit: 5 Minuten
Russ Batemann
Ich versuche, durch die Mauer zwischen mir und Mockito zu brechen. Ich habe mir die Haare ausgerissen, weil ich versucht habe, es richtig zu machen statisch importieren Aussagen für Mockito-Sachen. Man könnte meinen, jemand würde einfach einen Tisch hochwerfen, wenn er das sagt beliebigInt() kommt von org.mockito.Matchers und Wenn() kommt von org.mockito.Mockitousw., aber das wäre zu hilfreich für Neulinge, oder?
So etwas ist nicht immer sehr hilfreich, insbesondere wenn es mit unzähligen weiteren Importanweisungen gemischt wird, die mit Sternchen enden:
Ja, ich kenne und habe versucht, das zu verwenden Eclipse-Fenster -> Einstellungen -> Java -> Editor -> Inhaltshilfe -> Favoriten Mechanismus. Es hilft, trifft aber nicht den Nagel auf den Kopf.
Alle Antworten auf diese Frage wären willkommen.
Vielen Dank Russ
Tut mir leid, die Community herumzureißen: In meinem ursprünglichen Beitrag wurde auch eine andere Frage gestellt, aber ich habe festgestellt, dass aufgrund einer fehlenden Klammer etwas mit meinem Code nicht stimmt, also habe ich dieses Bit entfernt.
Sie müssen also verstehen, dass ich das Sternchen in import-Anweisungen religiös vermeide, weil es einfach hoffnungslos ist, zu wissen, woher ein Symbol kommt, wenn man so etwas oben im Code sieht, und daher keine Möglichkeit, herauszufinden, welche JAR eingefügt werden soll in meinem Projekt. Das Durchsuchen von Javadoc im Browser ist nicht so gut, um Symbole zu finden. Ja, ein Spickzettel wäre wirklich nett, aber als ein Kollege und ich gerade darüber gesprochen haben, ist dies eines der Probleme, von denen Sie glauben, dass die Java-Community sie inzwischen gelöst hätte. Danke – lassen Sie mich wissen, wenn Sie eine tun.
– Russ Batemann
6. September 2011 um 17:41 Uhr
Statisches org.mockito.Mockito.* importieren; hat mir geholfen, meinen Code erfolgreich zu kompilieren.
– ZhaoGang
31. Oktober 2016 um 1:43 Uhr
Hier ist, was ich getan habe, um mit der Situation fertig zu werden.
Ich verwende globale Importe für eine neue Testklasse.
Wenn Sie mit dem Schreiben Ihres Tests fertig sind und ihn übergeben müssen, drücken Sie einfach STRG+UMSCHALT+O, um die Pakete zu organisieren. Zum Beispiel können Sie nur mit verlassen werden:
Was ist der Nachteil bei der dauerhaften Verwendung von Dingen wie import static org.junit.Assert.*; in Ihren Testklassen (ersetzen Sie sie nicht durch ctrl+shift+O Am Ende)?
– mkasberg
22. Januar 2018 um 17:49 Uhr
Da ich immer wieder auf Ihre Antwort für diese 3 Zeilen zurückkomme. Vielleicht könntest du updaten import static org.mockito.Matchers.*; zu import static org.mockito.ArgumentMatchers.*; Weil Matchers ist als veraltet gekennzeichnet
– timguy
6. März 2020 um 9:22 Uhr
@timguy Danke – ich werde einen Blick darauf werfen! Kaum zu glauben, dass es schon 9 Jahre her sind…
– Toni R
6. März 2020 um 16:46 Uhr
Garret Hall
Das Problem ist, dass statische Importe aus Hamcrest und Mockito haben ähnliche Namen, geben aber Matchers bzw. reelle Werte zurück.
Eine Problemumgehung besteht darin, einfach die Hamcrest- und/oder Mockito-Klassen zu kopieren und die statischen Funktionen zu löschen/umzubenennen, damit sie leichter zu merken sind und weniger in der automatischen Vervollständigung angezeigt werden. Das ist, was ich tat.
Außerdem versuche ich, Mocks zu vermeiden assertThat zugunsten anderer anderer assertions und verifyz.B
Wenn Sie die Klassen aus Ihren Favoriten in Eclipse entfernen und den langen Namen eingeben, z org.hamcrest.Matchers.equalTo und drücken Sie STRG + UMSCHALT + M, um “Import hinzufügen” auszuführen. Die automatische Vervollständigung zeigt Ihnen nur Hamcrest-Matcher, keine Mockito-Matcher. Und Sie können dies auch andersherum tun, solange Sie keine Matcher mischen.
Ja, Sie haben eine meiner Beschwerden als Neuling auf den Punkt gebracht: Ich bin mir nicht sicher, woher eine Schnittstelle stammt (JUnit, Mock Framework, Hamcrest usw.). Ich verbringe mehr Zeit damit, ein Projekt aus JARs zusammenzusetzen, als ich wirklich müssen (als ich es früher jemals getan habe, als ich C-Schnittstellen aus Bibliotheken und Header-Dateien gefunden habe).
– Russ Batemann
6. September 2011 um 17:49 Uhr
Sie werden vielleicht eloquenter darüber sprechen, warum Sie assertThat vermeiden: Ich habe noch nicht gründlich genug darüber nachgedacht, aber ich versuche gerade, Tests mit Mocks zu schreiben, und das Verifizieren ist neu für mich. Vielen Dank.
– Russ Batemann
6. September 2011 um 17:51 Uhr
Okay, ich habe eine andere Lösung für dich. Ich hoffe, das hilft!
Tut mir leid, die Community herumzureißen: In meinem ursprünglichen Beitrag wurde auch eine andere Frage gestellt, aber ich habe festgestellt, dass aufgrund einer fehlenden Klammer etwas mit meinem Code nicht stimmt, also habe ich dieses Bit entfernt.
– Russ Batemann
6. September 2011 um 16:04 Uhr
Suchen Sie nach einem Cheatsheet? Wir können wahrscheinlich einen zaubern? Was ist an der API mangelhaft? mockito.googlecode.com/svn/branches/1.6/javadoc/index.html?org/…
– Toni R
6. September 2011 um 16:42 Uhr
Sie müssen also verstehen, dass ich das Sternchen in import-Anweisungen religiös vermeide, weil es einfach hoffnungslos ist, zu wissen, woher ein Symbol kommt, wenn man so etwas oben im Code sieht, und daher keine Möglichkeit, herauszufinden, welche JAR eingefügt werden soll in meinem Projekt. Das Durchsuchen von Javadoc im Browser ist nicht so gut, um Symbole zu finden. Ja, ein Spickzettel wäre wirklich nett, aber als ein Kollege und ich gerade darüber gesprochen haben, ist dies eines der Probleme, von denen Sie glauben, dass die Java-Community sie inzwischen gelöst hätte. Danke – lassen Sie mich wissen, wenn Sie eine tun.
– Russ Batemann
6. September 2011 um 17:41 Uhr
Statisches org.mockito.Mockito.* importieren; hat mir geholfen, meinen Code erfolgreich zu kompilieren.
– ZhaoGang
31. Oktober 2016 um 1:43 Uhr