No teste de unidade, quais são as diferenças entre @Runwith(SpringRunner.class)
& @SpringBootTest
?
Você pode me explicar os casos de uso de cada um?
java
spring-boot
junit
spring-boot-test
zouari
fonte
fonte
Respostas:
@RunWith (SpringRunner.class): você precisa desta anotação para ativar apenas os recursos de inicialização do Spring
@Autowire
, como@MockBean
etc. durante o teste de junção@SpringBootTest: esta anotação é usada para carregar o contexto completo do aplicativo para testes de integração de ponta a ponta
Aqui está o artigo com exemplos claros nos dois cenários .
fonte
De spring.io :
Portanto, se você não precisa de tudo o que o Spring Boot carrega para seu teste de integração, pode não ser necessário
@SpringBootTest
fonte
@RunWith é uma anotação antiga do JUnit 4 para usar corredores de teste. Se você estiver usando o JUnit 5 (Jupiter), use @ExtendWith para usar extensões JUnit
Consulte https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing
"Se você estiver usando o JUnit 4, não se esqueça de adicionar também @RunWith (SpringRunner.class) ao seu teste, caso contrário as anotações serão ignoradas. Se você estiver usando o JUnit 5, não será necessário adicionar o equivalente @ExtendWith ( SpringExtension.class) como @SpringBootTest e as outras anotações @… Test já estão anotadas.
fonte