首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Arquillian集成测试遗留Java EE应用程序

使用Arquillian集成测试遗留Java EE应用程序
EN

Stack Overflow用户
提问于 2011-12-05 08:14:48
回答 1查看 1.9K关注 0票数 4

我最近开始使用一个大型的遗留企业Java应用程序。它主要构建在Websphere Commerce 6上,它包含EJB1.x和2.x的混合以及相当多的代码,这些代码直接与Commerce API挂钩。

我介绍了第一个单元测试,同时尝试打破依赖关系并仔细重构一小部分代码。我们一直在探索使用集成测试框架的想法,使创建测试的过程不那么脆弱和耗时。

Arquillian已经被建议作为集成测试的一个非常好的选择。但是,它看起来更适合更“现代”的应用程序;大多数示例都使用Java和5+。我们使用的是J2EE和Ant。我们目前还绑定到Java1.4,虽然我们有可能迁移到Java5,但我们不会很快升级到EJB3.x。我们也可能坚持使用Ant。

考虑到这些限制,是否可以使用Arquillian?或者,对于集成测试遗留企业Java应用程序,是否有更好的替代方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-05 23:05:19

Arquillian已经被建议作为集成测试的一个非常好的选择。但是,它看起来更适合更“现代”的应用程序;大多数示例都使用Java和5+。我们使用的是J2EE和Ant。我们目前还绑定到Java1.4,虽然我们有可能迁移到Java5,但我们不会很快升级到EJB3.x。我们也可能坚持使用Ant。

考虑到这些限制,是否可以使用Arquillian?

注:我是Arquillian的贡献者。我已经试着在我的回答中保持公正。

这实际上取决于您的测试是如何执行的。如果您试图使用Arquillian对容器内测试的支持,那么您不太可能找到解决方案。ArquillianCommical6使用Arquillian6.0作为底层容器,目前还不支持WebSphere。如果您可以假设使用一个使用WAS7.0或8.0作为基础的WebSphere商务版本,那么我的大部分答案都可以忽略,因为这些容器都是受支持的。

您可以尝试使用@RunAsClient注释从客户端运行测试,而不是使用容器,这样做更有可能成功。请注意,您需要以某种方式执行部署,而不使用@Deployment注释方法,因为前面提到的Arquillian中缺少对WAS6的支持。

如果您打算使用Ant而不是Maven,那么惟一的要求是所有依赖项都存在于类路径中。不幸的是,没有适用于Arquillian的uber JAR或发行版,所以现在,您需要预先了解所有依赖项。

注意-与其他更新的容器相比,在Arquillian6.0中构建对WebSphere的支持可能不是一件微不足道的事情:

  • 首先,必须有部署归档文件的方法。我不确定Arquillian 7和8容器支持中使用的机制是否可以移植到Arquillian over.
  • Supporting WAS6.0中的容器内测试可能需要支持Servlet2.4协议才能运行测试。目前,Arquillian支持Servlet Spec 2.5和3.0来打包它的ServletTestRunner。当然,如果不能使用JMX协议和附带的JMXTestRunner,这是必要的。

或者是否有更好的替代方案来集成测试遗留企业

应用程序?

我通常会建议人们在functional testing遗留应用程序中混合使用Cargo和JUnit,但即使是Cargo似乎也不支持WebSphere 6.0。

如果您愿意将JUnitEE TestRunner打包到归档中,您可能会发现JUnitEE更适合您的需要;请注意,JUnitEE的上一版本是在2004年,而mailing list有点不活跃,所以YMMV。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8379686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档