SpringRunner vs SpringBootTest


11

Jakie są różnice w teście jednostkowym między @Runwith(SpringRunner.class)& @SpringBootTest?

Czy możesz mi wyjaśnić przypadki użycia każdego z nich?


1
Czy przeczytałeś jakąś dokumentację? Co jest jeszcze niejasne?
jonrsharpe

Oczywistą różnicą jest Wiosna Test vs testu rozruchowego wiosennej, ale to bardzo szerokie pytanie
user7294900

Zrozumiałbym, kiedy powinienem użyć @SpringBootTest oprócz SpringRunner.
zouari,

Odpowiedzi:


10

@RunWith (SpringRunner.class): Trzeba to po prostu włączyć adnotację do bagażnika takich jak sprężyna @Autowire, @MockBeanitp .. podczas testów junit

służy do zapewnienia pomostu między funkcjami testowymi Spring Boot a JUnit. Za każdym razem, gdy w testach JUnit korzystamy z jakichkolwiek funkcji testowych Spring Boot, ta adnotacja będzie wymagana.

@SpringBootTest: ta adnotacja służy do ładowania pełnego kontekstu aplikacji na potrzeby testów integracji od końca do końca

Adnotacji @SpringBootTest można użyć, gdy potrzebujemy załadować cały kontener. Adnotacja polega na utworzeniu ApplicationContext, który zostanie wykorzystany w naszych testach.

Oto artykuł z jasnymi przykładami na temat obu scenariuszy Baeldung


1

Od spring.io :

@RunWith(SpringRunner.class)mówi JUnitowi, aby uruchomił przy użyciu wsparcia testowego Springa. SpringRunnerto nowa nazwa SpringJUnit4ClassRunner, jest tylko trochę łatwiejsza dla oka.

@SpringBootTestmówi „bootstrap ze wsparciem Spring Boot” (np. załaduj application.propertiesi daj mi całą dobroć Spring Boot)

Jeśli więc nie potrzebujesz wszystkiego, co ładuje Spring Boot do testu integracji, możesz nie być potrzebny @SpringBootTest


0

@RunWith to stara adnotacja z JUnit 4 do używania testerów. Jeśli używasz JUnit 5 (Jupiter), powinieneś użyć @ExtendWith, aby użyć rozszerzeń JUnit

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

„Jeśli używasz JUnit 4, nie zapomnij również dodać @RunWith (SpringRunner.class) do testu, w przeciwnym razie adnotacje zostaną zignorowane. Jeśli używasz JUnit 5, nie musisz dodawać równoważnego @ExtendWith ( SpringExtension.class) jako @SpringBootTest i inne @… Adnotacje testowe są już z nim opatrzone adnotacjami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.