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?
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?
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
é usado para fornecer uma ponte entre os recursos de teste do Spring Boot e o JUnit. Sempre que estivermos usando qualquer recurso de teste do Spring Boot em nossos testes JUnit, essa anotação será necessária.
@SpringBootTest: esta anotação é usada para carregar o contexto completo do aplicativo para testes de integração de ponta a ponta
A anotação @SpringBootTest pode ser usada quando precisamos inicializar o contêiner inteiro. A anotação funciona criando o ApplicationContext que será utilizado em nossos testes.
Aqui está o artigo com exemplos claros nos dois cenários .
De spring.io :
@RunWith(SpringRunner.class)
diz ao JUnit para executar usando o suporte de teste do Spring.SpringRunner
é o novo nomeSpringJUnit4ClassRunner
, é apenas um pouco mais fácil para os olhos.
@SpringBootTest
está dizendo "bootstrap com suporte do Spring Boot" (por exemplo, carregueapplication.properties
e me dê toda a bondade do Spring Boot)
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
@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
"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.