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, @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
Od spring.io :
@RunWith(SpringRunner.class)mówi JUnitowi, aby uruchomił przy użyciu wsparcia testowego Springa.SpringRunnerto nowa nazwaSpringJUnit4ClassRunner, jest tylko trochę łatwiejsza dla oka.
@SpringBootTestmówi „bootstrap ze wsparciem Spring Boot” (np. załadujapplication.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
@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.