SpringRunner vs SpringBootTest


11

Was sind im Unit-Test die Unterschiede zwischen @Runwith(SpringRunner.class)& @SpringBootTest?

Können Sie mir die Anwendungsfälle jedes einzelnen erklären?


1
Haben Sie eine der verschiedenen Dokumentationen gelesen? Was ist noch unklar?
Jonrsharpe

Der offensichtliche Unterschied ist Spring Test vs Spring Boot Test, aber es ist eine sehr breite Frage
user7294900

Ich würde verstehen, wann ich zusätzlich zu SpringRunner @SpringBootTest verwenden sollte.
Zouari

Antworten:


10

@RunWith (SpringRunner.class): Sie müssen diese Anmerkung nur Federverschluß ermöglichen wie Funktionen @Autowire, @MockBeanetc .. 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


1

Von spring.io :

@RunWith(SpringRunner.class)Weist JUnit an, die Testunterstützung von Spring zu verwenden. SpringRunnerist der neue Name für SpringJUnit4ClassRunner, es ist nur ein bisschen leichter für das Auge.

@SpringBootTestsagt "Bootstrap mit Spring Boot-Unterstützung" (zB laden application.propertiesund 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


0

@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

Siehe https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing

"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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.