Methode äquivalent für @InjectMocks
Was ist Methode äquivalent für die folgenden:
@Mock
MyType1 myType1;
@Autowired
@InjectMocks
MyType2 myType2;
Kann ich ersetzen @Mock
mit mock(MyType1.class)
.
Aber wie kann ich das ersetzen @InjectMocks
mit einem Methodenaufruf? So etwas wie dieses:
injectMocks(MyType2.class)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum
Autowired
in Ihrem junit test? Da Sie verspotten die Abhängigkeiten fürMyType2
müssen Sie wissen, in seiner konkreten Umsetzung, wenn Sie schreiben Sie Ihren test.Dann brauchen Sie nicht und sollten nicht Frühling oder jede injection-framework zum erstellen der Instanz von
MyType2
, die Sie testen möchten. Erstellen Sie direkt in der test-Initialisierung! Ich weiß, dass nach einigen Jahren mit IoC-frameworks, ist es schwierig, einen zu schreibenmyType2 = new MyType2Impl(mock(myType1.class))
aber es macht wirklich Ihre tests einfacher und schneller (weil keine Anwendungskontext zu bauen).E. g.:
Aber wenn Sie wirklich wollen, zu verwenden IoC in Ihrem junit-tests verwenden springockito hat vorgeschlagen, die von Brice, und bauen Sie Ihre mock
MyType1
in Ihrem Anwendungskontext.@InjectMocks
manuell?Gibt es keine öffentliche API-in Mockito für mock-Injektion. Plus als diese Anmerkung ist größtenteils auf die Art, wie die Dinge ausgelegt sind, ein test, es ist ziemlich im Zusammenhang mit der Initialisierungs-phase des Tests.
Obwohl es ändern könnte irgendwann in der Zukunft.
Jedoch Mockito annotierten Felder können initialisiert werden, entweder durch die
MockitoJUnitRunner
oder durchMockitoAnnotations.initMocks()
. Sie erstellen von mock-Instanzen und durchführen der Injektion.Auch ich sehe in deinem code, den Sie verwenden
@Autowired
- daher spring-Zeug, wahrscheinlich die Konfiguration per XML.@InjectMocks
war nicht wirklich entwickelt, um mit anderen dependency-injection-frameworks, wie die Entwicklung war getrieben von unit-test-use-cases, nicht die integration-tests.Möchten Sie vielleicht einen Blick auf springockito, das ist ein weiteres Projekt, das versucht, die Leichtigkeit Mockito mock-Erstellung im Frühjahr.
Hoffe, das hilft