SpringRunner vs SpringBootTest


11

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?


11
Você leu alguma das várias documentações? O que ainda não está claro?
jonrsharpe

A diferença óbvia é o teste Spring versus o teste de inicialização Spring, mas é uma questão muito ampla #
user7294900

Eu entenderia quando devo usar o @SpringBootTest além do SpringRunner.
Zouari 17/11/19

Respostas:


10

@RunWith (SpringRunner.class): você precisa desta anotação para ativar apenas os recursos de inicialização do Spring @Autowire, como @MockBeanetc. 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 .


1

De spring.io :

@RunWith(SpringRunner.class)diz ao JUnit para executar usando o suporte de teste do Spring. SpringRunneré o novo nome SpringJUnit4ClassRunner, é apenas um pouco mais fácil para os olhos.

@SpringBootTestestá dizendo "bootstrap com suporte do Spring Boot" (por exemplo, carregue application.propertiese 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


0

@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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.