Verwenden von MockitoJUnitRunner.class anstelle von SpringJUnit4ClassRunner.class

9

Ich habe eine Frage zur Verwendung von SpringJUnit4ClassRunner . Für reine Junits oder Unit-Testfälle sollten wir Spring-basierte Annotationen wie @Autowired zusammen mit SpringJUnit4ClassRunner verwenden oder sollten wir stattdessen nur die MockitoJUnitRunner mit der @RunWith Annotation am Anfang der Test-Klasse verwenden?

Ich meine ersetzen

%Vor%

mit nur

%Vor%

an der Spitze der Klasse. Es funktioniert für mich.

In Junits führen wir normalerweise keine externen Anrufe wie Anrufe an die DB oder Anruf bei einem anderen Web-Service durch. Wir müssen diese externen Aufrufe mit @Mock Annotationen für diese Serviceobjekte überspielen. Und dann erstellen Sie ein reales Objekt der Klasse, die wir testen, und das hängt von diesen Mocks ab. Wir können dann @InjectMocks für das reale Objekt verwenden, damit die gespotteten Objekte mit injiziert werden.

Beispiel Service-A- & gt; Anrufe- & gt; Service-B- & gt; Anrufe- & gt; Service-C

Beim Testen von A sollten wir Service B & amp; Beim Testen von Service-B sollten wir Service-C vortäuschen.

Ein Code-Snippet

%Vor%

Ich glaube, dass wir uns für Unit-Testfälle nicht auf Spring-Container verlassen müssen, um uns die Instanz der Klasse zu liefern, die wir testen.

Bitte geben Sie Ihre Vorschläge.

Verwenden von SpringJUnit4ClassRunner.class anstelle von MockitoJUnitRunner.class

    
Ayaskant 28.06.2015, 15:47
quelle

1 Antwort

-2

Für Komponententests brauchen wir Spring nicht, müssen aber einen Teil des Spring-Kontexts für Integrationstests instanzieren, indem wir die Data Access / Integration-Ebene mokieren. Sie können TestNG anstelle von JUnit verwenden und eines dieser Frameworks für die Integration und sogar Systemintegrationstests verwenden.

    
Konstantin Pavlov 29.06.2015 10:25
quelle

Tags und Links