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?

Zouari
quelle
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

Totes Schwimmbad
quelle
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

Xavier FRANCOIS
quelle
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.

Tore Gard bei techpros nr
quelle