最近,我们一直在努力寻找一种解决方案来提高Java EE,尤其是JBoss AS的可测试性。我很高兴地说,这个解决方案的关键部分,Arquillian,现在已可用。祝贺Aslak和Arquillian团队发布Arquillian的第一个alpha版本!您可以在下面的部分中了解更多关于Arquillian的使命和我们的Java EE测试计划;如果您想立即开始,页面底部也有一些快速链接。
Arquillian项目的使命是提供一个简单的测试工具,开发人员可以使用它为他们的Java应用程序(很可能是有企业应用)创建各种集成测试。一个测试用例可以在容器内执行,与测试代码一起部署,或者通过协调容器,作为已部署代码的客户端。Arquillian定义了两种容器风格,远程和嵌入式。远程容器位于测试运行器的独立JVM中。其生命周期可以由Arquillian管理,或者Arquillian可以绑定到一个已经启动的容器。嵌入式容器位于同一个JVM中,很可能是由Arquillian管理的。容器可以根据其能力进一步分类。例如,一个完全符合Java EE的应用服务器(例如,GlassFish、JBoss AS、嵌入式GlassFish)、一个Servlet容器(例如,Tomcat、Jetty)和一个bean容器(例如,Weld SE)。Arquillian确保用于测试的容器是可插拔的,这样开发人员就不会被专有测试环境锁定。Arquillian试图通过处理测试执行的各个方面(包括为了不将不必要的复杂性引入开发人员的构建环境中,Arquillian与熟悉的测试框架(例如,JUnit 4、TestNG 5)透明地集成,允许使用现有的IDE、Ant和Maven测试插件来启动测试,而不需要任何附加组件。
- 管理容器的生命周期(启动/停止),
- 将测试类和依赖的类及资源捆绑成一个可部署的存档,
- 增强测试类(例如,解析@Inject、@EJB和@Resource注入),
- 将存档部署到测试环境(部署/卸载)以及
- 捕获结果和失败。
Arquillian使命宣言
Arquillian的第一个alpha版本为我们提供了对JBoss AS(远程部署)、GlassFish(嵌入式部署)、Weld SE(嵌入式部署)和OpenEJB(嵌入式部署)的支持。您还可以将bean和组件(使用@Resource或@Inject)注入到测试用例中。
我们将在未来的版本中添加支持的容器 - 如果您想看到您最喜欢的容器在列表中,加入我们的社区,我们可以向您展示如何添加对该容器的支持。我们还计划添加更多约定优于配置的功能,这意味着您只需指定一个部署,然后在所有测试用例中重复使用它。Aslak 在后续博客条目中写了更多关于未来想法。他还提供了一些使用Arquillian的示例。
我们坚信编写测试,编写真正测试最终运行环境的业务逻辑的测试,而不是引入模拟对象(它们可能表现不同)。虽然单元测试对于确保逻辑的正确性很重要,但它并不能确保相互交互的两个对象的正确性。
借助ShrinkWrap项目,Arquillian为您提供了在测试周围创建微型部署
的能力。微型部署是您应用程序逻辑的包含子部分。这使得您能够进行比常规集成测试更低级别的集成测试。您可以选择在哪个级别进行测试!
我们还知道您需要一个方便的方式来快速运行测试,这就是为什么我们要使JBoss嵌入式AS适应这个需求。嵌入式AS在运行测试时可以在同一JVM中启动JBoss AS,使得调试测试变得非常容易。遗憾的是,嵌入式AS支持尚未包含在本版本中(我们决定发布现在的成果,而不是延迟),但我们将在准备就绪后尽快推出。
测试您的组件和服务可以让您走得更远,但您几乎总是想测试您的表示层。这就是框架如JSFUnit和Selenium发挥作用的地方——它们允许您执行用户将使用的流程。计划支持这两个框架,以及模拟JSF对象
。
如果您对所听到的内容感到满意,但又担心Arquillian需要构建脚本魔术才能使用,那么让我们再次让您惊讶!能够在IDE中运行这些测试是Arquillian的一个关键目标——快速开发周期的关键。Arquillian不需要构建脚本!所以查看文档并尝试一下!
[ JIRA ] | [ SPI Javadoc,API Javadoc ] | [ 参考指南 ] | [ 发布说明 ]