我正在尝试用JUnit测试我的Spring MVC控制器,我得到了这个:
java.lang.AssertionError: Status expected:<200> but was:<404>
我想我的控制器测试的JUnit设置不能正常工作,但我真的不能指出错误在哪里。我已经阅读了很多这方面的教程,令人沮丧。
这是我的LoginController类的简化版本,但它就足够了
@Controller
public class LoginController {
@Autowired
private DAO dao;
@RequestMapping(value = "username", method = RequestMethod.GET)
public String GetUsername(Model model){
model.addAttribute("username", dao.getUsername());
return "login"; //login.jsp
}
这是测试该控制器的JUnit类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/Spring-Context.xml")
public class LoginControllerTest {
@Mock
private DAO dao;
@InjectMocks
LoginController controller;
private MockMvc mockMvc;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
this.mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Test
public void test() throws Exception{
mockMvc.perform(get("username")).andExpect(status().isOk());
}
}
我得到“404”。同样的事情,如果我测试示例“forwardedUrl(”/ PATH / login.jsp“)”结果为null。
我的Spring-Context.xml有
mvc:annotation-driven /&gt;
我的控制台错误是: org.springframework.web.servlet.DispatcherServlet noHandlerFound 警告:在DispatcherServlet中,名称为“
”的HTTP [username]的HTTP请求未找到映射我真的没有这样做,因为毕竟我的应用程序工作正常,所以我的映射没有问题。