Если вы хотите протестировать контроллер, вам не нужно использовать его в своих тестах. Вы бы использовали MockMvc
Вот пример:
@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@EnableAutoConfiguration
public class SomeTest {
@Autowired
private MockMvc mockMvc;
@Test
public void getGeneratedPassword_shouldReturn200Status() throws Exception {
boolean isGenerated = this.mockMvc.perform(get("/generate/password/1").with(httpBasic(this.username, this.password)))
.andExpect(authenticated())
.andExpect(status().isOk())
.andReturn()
.getResponse()
.getContentAsString().isEmpty;
assertFalse(isGenerated);
}
}
Тест будет пройден, поскольку он вернет не пустую строку. Существует также 2 этапа проверки. Если пользователь правильный и если статус HTTP 200.
Будет работать с версией 2.1.0 Spring Boot и выше. Вы также можете добавить свой путь application.properties.
Документация: https://spring.io/guides/gs/testing-web/
Другой способ, который можно использовать в вашем текущем коде, - добавить эту аннотацию:
@SpringBootTest(classes = {ContactController.class, TestContactBuilder.class})