cwa*_*ash 3 spring portal unit-testing
我没有在这个领域看到任何我推荐给客户的东西.如果你使用过Spring PortletMVC,你是如何测试它的?
在portlet代码级别下测试很容易,并且通过HtmlUnit,Selenium等在客户端测试相对容易,但我没有看到任何与JSFUnit精神相关的"灰盒子"测试(其中期待我前进的方向).
我对portlet一无所知,但在这里.
portletUnit是一个测试框架,用于测试portlet容器外部的JSR-168 portlet,就像servletUnit用于测试servlet容器外部的servlet一样.预计的架构是将servletUnit的功能性映射到portlet上,servletUnit本身为portletUnit提供了基础.
可以在他的Project PortletUnit博客上找到更多相关信息,包括PortletUnit和Spring Portlet:检查表单验证错误.
使用portletUnit进行测试时,如何检查是否存在任何表单错误并不明显.幸运的是,使用渲染侦听器功能
PortletRunner,有一种简单的方法可以检查验证器错误.
还有一篇由Nils-Helge Garli Hegvik于2007年撰写的博客文章,标题为使用Jetty,Pluto和JWebUnit测试Portlet.
记得约翰内斯布罗德沃尔博客关于Jetty和JWebUnit集成测试的优秀文章,我想扩展他的方法来使用我创建的嵌入式jetty-pluto设置.结果证明这很容易.
最后,Spring Framework文档10.2单元测试.
该
org.springframework.mock.web.portlet软件包包含一组Portlet API模拟对象,旨在与Spring的Portlet MVC框架一起使用.[...]
org.springframework.test.web包中包含ModelAndViewAssert,可以与任何测试框架(例如,JUnit 4 +,TestNG等)结合使用,用于处理Spring MVCModelAndView对象的单元测试.[...]要测试你的Spring MVC控制器,使用
ModelAndViewAssert结合MockHttpServletRequest,MockHttpSession从等org.springframework.mock.web package.
这是John Ferguson Smart撰写的一篇相关文章,名为 Unit测试你的Spring-MVC应用程序.
这个框架的一大优点是它是多么可测试.在Spring-MVC中,任何自定义验证器(用于字段和表单验证)和属性编辑器(用于将文本字段转换为特定的Java类型)都很容易测试 - 您可以像对待隔离的POJO一样测试它们.
Spring-MVC还附带了一整套模拟对象,您可以使用它们(通过一些练习)来测试控制器的内容.例如,您可以使用类
MockHttpServletRequest和MockHttpServletResponse模拟HTTP请求和响应对象.Controllers可以作为普通的Java类实例化,这也变得更容易了.例如,假设您正在测试更新客户端详细信息记录的页面的控制器类.您可以非常简单地执行以下操作:
public class UpdateClientTest {
//
// Prepare your request
//
request.setMethod("POST");
request.setParameter("id", "100");
request.setParameter("firstName", "Jane");
request.setParameter("lastName", "Doe");
//
// Invoke the controller
//
controller = new ChoosePeriodController();
ModelAndView mav = controller.handleRequest(request, response);
//
// Inject any service objects you need
//
controller.setClientService(clientService);
...
//
// Inspect the results
//
assert mav != null;
assertEquals("displayClient",mav.getViewName());
Client client = (Client) mav.getModel().get("client");
assertEquals("Jane",client.getFirstName());
assertEquals("Doe",client.getLastName());
...
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |