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?
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?
Odpowiedzi:
@RunWith (SpringRunner.class): Trzeba to po prostu włączyć adnotację do bagażnika takich jak sprężyna @Autowire
, @MockBean
itp .. 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
Od spring.io :
@RunWith(SpringRunner.class)
mówi JUnitowi, aby uruchomił przy użyciu wsparcia testowego Springa.SpringRunner
to nowa nazwaSpringJUnit4ClassRunner
, jest tylko trochę łatwiejsza dla oka.
@SpringBootTest
mówi „bootstrap ze wsparciem Spring Boot” (np. załadujapplication.properties
i 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
@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
„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.