代码之家  ›  专栏  ›  技术社区  ›  Ryan

单元测试冰面

  •  5
  • Ryan  · 技术社区  · 15 年前

    您是否可以分离IceFaces应用程序的组件,以便可以单独测试它们,而不是在组装的应用程序上使用Selenium或HttpUnit之类的东西?

    支持bean可以很容易地隔离(如果编写为可测试的),但我对测试应用程序的模板/显示部分感兴趣,同时尽可能少地使用应用程序的其余部分。这能做到吗?怎么用?

    有没有一种方法可以使用“虚拟数据”将IceFaces对象呈现为文本,然后通过传统的单元测试运行?

    我可以想出各种方法来完成这一切,但它们涉及到创建多个应用程序(我希望测试的每个组件一个)。然而,这似乎是一种次优的做事方式。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Pascal Thivent    15 年前

    JSFUnit (它使用JUnit、Cactus、HtmlUnit和HttpUnit)似乎是JSF领域测试的重要候选。你考虑过这个选择吗?也许你可以看一看 JSFUnit Wiki 及其 Getting Started Guide .

    jboss-jsfunit-examples-icefaces icefaces-demo-address 在JBoss存储库中,因此有必要询问JSFUnit或IceFaces邮件列表上的确切状态)。

    编辑: 正如在评论中提到的,OP正在寻找一些不太“高水平”的东西。也许你可以看一看 Shale Test Framework :

    用于创建自己的JUnit TestCase

    模拟对象在包中提供 org.apache.shale.test.mock 对于 以下容器API:

    • Servlet

    免责声明:Apache Shale已迁移到 Attic 在2009年5月(也就是说,它已经到了生命的尽头),但我不知道还有任何其他针对JSF的“成熟”模拟框架,所以我还是要提到它(代码仍然存在)。我将以对其他解决方案的高度兴趣关注这一主题:)

        2
  •  1
  •   rtperson    15 年前

    如果我正确理解了您的问题,那么应该是一个简单的问题,为您的页面创建特殊的虚拟支持bean,然后创建一个测试JSF配置文件,将这些bean映射到.jspx文件。当然,虚拟bean不会涉及任何业务逻辑或后端服务——它们只是简单的数据集,在测试中很容易验证。

    创建一个ant脚本来替换虚拟备份bean和测试配置文件。运行您的测试。如果你不想要像HTTPUnit这样沉重的东西,如果你在应用程序中使用Spring,请看 this blog post 这是一种在没有web服务器的情况下模拟完整web上下文的极好方法。您的测试可能需要嗅探原始HTML输出以验证结果。这将是一个棘手的问题,因为IceFaces喜欢使用DIV id和DOM树的其他相关部分,您可能需要嗅探它们。(这可能就是为什么很少有JSF开发人员尝试对JSF输出进行单元测试的原因。)

    验证测试后,将常规bean和配置文件交换回应用程序。

    瞧!您刚刚对JSF组件进行了单元测试。

    祝你好运,让我知道你的结果如何!