Olá Senhores!
Estou enfrentando um problema com minha aplicação Java com Spring Boot, acontece o seguinte, quando tento criar uma classe qualquer de testes de integração onde desejo que o contexto do Spring seja carregado, o mesmo não acontece, simplesmente acusa um NPE.
Alguém tem ideia do que pode ser?
Exemplo de classe:
@ActiveProfiles("test")
@SpringBootTest
public class UserJdbcRepositoryIT {
@Autowired
private UserJdbcRepository subject;
@Test
public void test() {
subject.findByDocument("000.000.001-91"); // subject lança um NPE pois o contexto não foi inicializado
}
}
No console, nem está aparecendo a logo do spring iniciando? Rapaiz, estranho viu.
Criei um projeto aqui no spring initilizr. Criei um service qualquer, e fiz uma classe de teste com @SpringBootTest e funcionou normalmente. Deve ter alguma configuração faltando ou errada no seu projeto talvez.
Aparentemente pelo que pude perceber após um longo tempo de pesquisa e análise é que devido a versão do Spring que eu estou utilizando neste projeto que é 2.3.7.RELEASE, é necessário ter definido na classe um runner para que o contexto do Spring seja provido, no meu caso utilizei o @RunWith(SpringRunner.class), ficando da seguinte forma:
@ActiveProfiles("test")
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserJdbcRepositoryIT {
@Autowired
private UserJdbcRepository subject;
@Test
public void test() {
subject.findByDocument("000.000.001-91");
}
}
Nas versões mais recentes como por exemplo a 2.5.X essa anotação não é mais necessária, somente o @SpringBootTest já é o suficiente.
1 curtida
Só lembrando que o uso de SpringRunner é para a versão do 4 do junit. Se vc estiver usando o junit 5, use o SpringExtension:
@ExtendWith(SpringExtension.class)
FONTE: https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing.spring-boot-applications
1 curtida
Muito bem lembrado!
No meu caso é o JUnit 4 mesmo! 
1 curtida