Was sind im Unit-Test die Unterschiede zwischen @Runwith(SpringRunner.class)
& @SpringBootTest
?
Können Sie mir die Anwendungsfälle jedes einzelnen erklären?
Was sind im Unit-Test die Unterschiede zwischen @Runwith(SpringRunner.class)
& @SpringBootTest
?
Können Sie mir die Anwendungsfälle jedes einzelnen erklären?
Antworten:
@RunWith (SpringRunner.class): Sie müssen diese Anmerkung nur Federverschluß ermöglichen wie Funktionen @Autowire
, @MockBean
etc .. während junit Prüfung
wird verwendet, um eine Brücke zwischen Spring Boot-Testfunktionen und JUnit zu schlagen. Wenn wir in unseren JUnit-Tests Spring Boot-Testfunktionen verwenden, ist diese Anmerkung erforderlich.
@SpringBootTest: Diese Anmerkung wird verwendet, um den vollständigen Anwendungskontext für End-to-End-Integrationstests zu laden
Die Annotation @SpringBootTest kann verwendet werden, wenn der gesamte Container gebootet werden muss. Die Annotation erstellt den ApplicationContext, der in unseren Tests verwendet wird.
Hier ist der Artikel mit klaren Beispielen zu beiden Szenarien Baeldung
Von spring.io :
@RunWith(SpringRunner.class)
Weist JUnit an, die Testunterstützung von Spring zu verwenden.SpringRunner
ist der neue Name fürSpringJUnit4ClassRunner
, es ist nur ein bisschen leichter für das Auge.
@SpringBootTest
sagt "Bootstrap mit Spring Boot-Unterstützung" (zB ladenapplication.properties
und mir alle Spring Boot-Güte geben)
Wenn Sie also nicht alles benötigen, was Spring Boot für Ihren Integrationstest lädt, benötigen Sie möglicherweise nicht alles @SpringBootTest
@RunWith ist eine alte Anmerkung von JUnit 4 zur Verwendung von Testläufern. Wenn Sie JUnit 5 (Jupiter) verwenden, sollten Sie @ExtendWith verwenden, um JUnit-Erweiterungen zu verwenden
"Wenn Sie JUnit 4 verwenden, vergessen Sie nicht, Ihrem Test auch @RunWith (SpringRunner.class) hinzuzufügen. Andernfalls werden die Anmerkungen ignoriert. Wenn Sie JUnit 5 verwenden, müssen Sie nicht das entsprechende @ExtendWith ( SpringExtension.class) als @SpringBootTest und die anderen @… Testanmerkungen sind bereits mit Anmerkungen versehen.