Java 基于实际视图DOM的单元测试SpringMVC应用程序

Java 基于实际视图DOM的单元测试SpringMVC应用程序,java,spring,unit-testing,spring-mvc,Java,Spring,Unit Testing,Spring Mvc,我们有一个springmvcwebapp,目前我们能够使用MockHttpServletRequest对象对控制器进行单元测试 我们的测试类似于: request = new MockHttpServletRequest(_mockServletContext, "PUT", "/createNewUser.action"); request.setParameter("username", "bob123"); response = new MockHttpServletResponse();

我们有一个springmvcwebapp,目前我们能够使用
MockHttpServletRequest
对象对控制器进行单元测试

我们的测试类似于:

request = new MockHttpServletRequest(_mockServletContext, "PUT", "/createNewUser.action");
request.setParameter("username", "bob123");
response = new MockHttpServletResponse();
userController.createNewUser(request, response);
// Ensure the user was created, etc.
然后,我们查询底层数据库(和其他控制器),以确保工作正常

但是,这个不会测试我们正在发布的实际JSP页面。只是晴朗的天气嘲弄了他的要求

我们希望实现的是,能够从实际用户在浏览器中查看页面的角度模拟整个过程,如:

request = new MockHttpServletRequest(_mockServletContext, "GET", "/newUser.html");
response = new MockHttpServletResponse();
userController.newUser(request, response);
//Pseudo-code!
DOM thePage = SomeBuilder.fromResponse(response);
thePage.getTextField("usernameField").setText("bob123");
thePage.getButton("submitUserButton").click();
// Then, we test the same assertions
...
这有助于我们根据客户机实际看到的视图建立单元测试,包括确保存在正确的HTML组件,并且支持按钮单击的Javascript也向服务器/控制器发送正确的参数,例如,如果某一天需要用户的名字或,如果有输入错误,HTML表单实际发送的参数是“userUsername”,而不是“username”。在这种情况下,我们希望删除手动测试要求,因为根据当前经过身份验证的用户的角色,存在不同的代码路径/表单布局


是否有基于Java/SpringMVC的单元测试框架来完成这项任务?或者其他提供类似可靠性的代码模式?

否。您需要使用类似于
Selenium
的框架进行一些集成测试。感谢@SotiriosDelimanolis-这就是我们最终使用的,取得了很大成功。