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
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.
Tags und Links java unit-testing junit