Witam, mam pytanie jak poprawnie wykonywać testy w springu.
Załóżmy że mam controller, który wywołuje plik index.jsp czyli główną stronę aplikacji:
@WebServlet
public class HomeController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HomeController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.getRequestDispatcher("WEB-INF/index.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Wykonując test skonfigurowany w następujący sposób:
@RunWith(SpringRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = "classpath:/applicationContext.xml")
public class ApplicationTest {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void shouldReturnDefaultMessage() throws Exception {
this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Hello World")));
}
}
ciągle otrzymuje następujący błąd:
java.lang.AssertionError: Status expected:<200> but was:<404>
Ciągle nie znajduje mi przy uruchomieniu testów odpowiedniego contentu. Dzieje się tam po odpaleniu testów poprzez mavena(maven test). Sama aplikacja gdy odpalam ją na serwerze działa poprawnie. Ktoś wie dlaczego wyskakuje mi taki błąd? Ewentualnie ktoś ma jakieś wskazówki, tutoriale czy cokolwiek innego dotyczące testów aplikacji webowych w springu? W jaki sposób można przetestować właśnie taki controller który przedstawiłem przykładzie w prawidłowy sposób?
Pozdrawiam ;)