Unit testing 是否有一个可用的符合标准(168/286)的portlet测试框架?(尤其是与Spring PortletMVC一起使用的)

Unit testing 是否有一个可用的符合标准(168/286)的portlet测试框架?(尤其是与Spring PortletMVC一起使用的),unit-testing,spring,portal,Unit Testing,Spring,Portal,在这方面,我还没有见过任何我会推荐给客户的东西。如果您使用过SpringPortletMVC,您是如何测试它的 在portlet代码级别下进行测试很容易,通过HtmlUnit、Selenium等在客户端进行测试也相对容易,但我还没有看到任何符合JSFUnit精神的“灰盒”测试(我认为这是未来的方向) Apache的驱动程序理论上可以用于引导测试线束。有人试过这个吗 有存根或数据提供程序方法吗 有没有解决两阶段处理问题的方法 我对Portlet一无所知,但这就是它 有一个 portletUnit

在这方面,我还没有见过任何我会推荐给客户的东西。如果您使用过SpringPortletMVC,您是如何测试它的

在portlet代码级别下进行测试很容易,通过HtmlUnit、Selenium等在客户端进行测试也相对容易,但我还没有看到任何符合JSFUnit精神的“灰盒”测试(我认为这是未来的方向)

  • Apache的驱动程序理论上可以用于引导测试线束。有人试过这个吗
  • 有存根或数据提供程序方法吗
  • 有没有解决两阶段处理问题的方法

我对Portlet一无所知,但这就是它

有一个

portletUnit是一个测试框架 用于在外部测试JSR-168 Portlet 与servletUnit一样的portlet容器 用于在外部测试servlet servlet容器。预测结果是 设计用于映射 将servletUnit安装到具有 servletUnit本身提供 PosiLtUng.

基金会 可以在他的网站上找到更多相关信息,包括

使用portletUnit进行测试时 不清楚如何检查是否有 任何形式的错误。幸运的是,使用 的渲染侦听器功能
PortletRunner
,有一个简单的方法 检查验证程序错误

2007年,尼尔斯·赫尔格·加利·赫格维克(Nils Helge Garli Hegvik)在博客上写了一篇文章,题目是

记住一篇来自中国的优秀文章 约翰内斯·布罗德沃尔关于 与码头和码头的集成测试 JWebUnit,我想扩展他的 嵌入式系统的使用方法 我已经创建了jetty pluto设置。这 结果证明这很容易

最后是Spring框架文档

org.springframework.mock.web.portlet
包包含一组Portlet API 模拟对象,用于 Spring的Portlet MVC框架

[…]org.springframework.test.web 包包含
模型和视图断言
, 它可以与 任何测试框架(例如JUnit 4+, TestNG等)进行单元测试 使用Spring MVC
model和view
对象

[…]要测试Spring MVC控制器,请使用
modelandview断言
MockHttpServletRequest
MockHttpSession
等,从
org.springframework.mock.web包

以下是约翰·弗格森·斯马特(John Ferguson Smart)撰写的一篇相关文章,标题为

这件事的一大好处是 框架就是它的可测试性。在里面 Spring MVC,任何自定义验证器(用于 字段和表单验证)和 属性编辑器(用于转换文本) 特定Java类型的字段)是 非常容易测试-你可以直接测试 他们好像在孤立的波乔那里

SpringMVC还附带了一整套 可以使用的模拟对象(与 一点练习)来测试你的 控制器,让您心满意足。 例如,您可以使用如下类
MockHttpServletRequest
MockHttpServletResponse
模拟 您的HTTP请求和响应 物体。这也因为
Controller
s可以 实例化为普通Java类。 例如,假设您正在测试一个 用于以下页面的控制器类: 更新客户端详细信息记录。你 可以非常简单地如下所示:


签出spring test portlet mvc(),它将MockMvc的特性公开给门户上下文,并允许您轻松地集成测试spring portlet。

我想跳过第一个建议。PortletUnit已经很多年没有被接触过了,我找不到任何关于它的文档,我甚至不确定它是否适用于典型的企业设置。
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());  
    ...        
    }
    ...