Ich versuche durch die Mauer zwischen mir und Mockito zu krachen. Ich habe mir die Haare ausgerissen, weil ich versucht habe, korrekte statische Importanweisungen für Mockito-Sachen zu erhalten. Sie würden denken, jemand würde einfach eine Tabelle hochwerfen und sagen, dass anyInt () von org.mockito.Matchers stammt und when () von org.mockito.Mockito usw. stammt, aber das wäre für Neulinge zu hilfreich, nein?
Diese Art von Dingen ist nicht immer sehr hilfreich, insbesondere wenn sie mit unzähligen weiteren Import-Anweisungen gemischt werden, die mit Sternchen enden:
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
Ja, ich kenne den Eclipse-Fenster -> Einstellungen -> Java -> Editor -> Inhaltsassistent -> Favoriten- Mechanismus und habe versucht, ihn zu verwenden . Es hilft, aber es trifft nicht den Nagel auf den Kopf.
Alle Antworten auf diese Frage wäre dankbar.
Vielen Dank, Russ
quelle
Antworten:
Das Problem ist, dass statische Importe aus Hamcrest und Mockito ähnliche Namen haben, aber Matcher bzw. reale Werte zurückgeben.
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.
Auch wenn ich Mocks benutze, versuche ich,
assertThat
andere zu bevorzugenassertions
undverify
zassertEquals(1, 1); verify(someMock).someMethod(eq(1));
Anstatt von
assertThat(1, equalTo(1)); verify(someMock).someMethod(eq(1));
Wenn Sie die Klassen in Eclipse aus Ihren Favoriten entfernen und den langen Namen
org.hamcrest.Matchers.equalTo
eingeben, z. B. STRG + UMSCHALT + M, um "Import hinzufügen" auszuführen, werden bei der automatischen Vervollständigung nur Hamcrest-Matcher angezeigt, keine Mockito-Matcher. Und Sie können dies auch anders machen, solange Sie keine Matcher mischen.quelle
Folgendes habe ich getan, um mit der Situation fertig zu werden.
Ich verwende globale Importe für eine neue Testklasse.
import static org.junit.Assert.*; import static org.mockito.Mockito.*; import static org.mockito.Matchers.*;
Wenn Sie mit dem Schreiben Ihres Tests fertig sind und ein Commit durchführen müssen, drücken Sie einfach STRG + UMSCHALT + O, um die Pakete zu organisieren. Zum Beispiel können Sie nur noch übrig haben:
import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Matchers.anyString;
Auf diese Weise können Sie Code wegcodieren, ohne beim Versuch, das richtige zu importierende Paket zu finden, hängen zu bleiben.
quelle
import static org.junit.Assert.*;
in Ihren Testklassen dauerhaft verwenden (ohne sie am Ende durchctrl
+shift
+O
zu ersetzen )?import static org.mockito.Matchers.*;
,import static org.mockito.ArgumentMatchers.*;
weilMatchers
es als veraltet markiert istDenn ist ()
import static org.hamcrest.CoreMatchers.*;
Für assertThat ()
import static org.junit.Assert.*;
Für wann () und verifiziere ()
import static org.mockito.Mockito.*;
quelle