Estou tentando realizar um teste de integração em minha API que utiliza spring mvc, spring security, spring data, porem só obtive sucesso realizando ela com contexto como mostra o exemplo abaixo.
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class PaisControllerTest {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext context;
@Before
public void setup() {
mockMvc = MockMvcBuilders
.webAppContextSetup(context)
.apply(springSecurity())
.build();
}
@WithMockUser(username="ADMIN")
@Test
public void deveListarTodosPaises() throws Exception{
mockMvc.perform(get("/paises")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
}
}
Dessa maneira consegui testar perfeitamente, porem ele sempre sobre a aplicação completa o que leva um tempo considerável, ainda mais quando existirem mais testes para serem executados em conjunto.
Gostaria de saber se existe uma forma de se fazer isso de maneira mais rápida, sem precisar ter que subir a aplicação por completa?
Li a respeito da anotação @WebMvcTest porem não obtive sucesso com os testes que fiz sempre gerando erros com o security, alguém tem algum exemplo ou existe algum curso na Alura que trate a respeito de testes com SprintBoot Test?