我最近开始使用一个大型的遗留企业Java应用程序。它主要构建在Websphere Commerce 6上,它包含EJB1.x和2.x的混合以及相当多的代码,这些代码直接与Commerce API挂钩。
我介绍了第一个单元测试,同时尝试打破依赖关系并仔细重构一小部分代码。我们一直在探索使用集成测试框架的想法,使创建测试的过程不那么脆弱和耗时。
Arquillian已经被建议作为集成测试的一个非常好的选择。但是,它看起来更适合更“现代”的应用程序;大多数示例都使用Java和5+。我们使用的是J2EE和Ant。我们目前还绑定到Java1.4,虽然我们有可能迁移到Java5,但我们不会很快升级到EJB3.x。我们也可能坚持使用Ant。
考虑到这些限制,是否可以使用Arquillian?或者,对于集成测试遗留企业Java应用程序,是否有更好的替代方案?
发布于 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的支持可能不是一件微不足道的事情:
或者是否有更好的替代方案来集成测试遗留企业
应用程序?
我通常会建议人们在functional testing遗留应用程序中混合使用Cargo和JUnit,但即使是Cargo似乎也不支持WebSphere 6.0。
如果您愿意将JUnitEE TestRunner打包到归档中,您可能会发现JUnitEE更适合您的需要;请注意,JUnitEE的上一版本是在2004年,而mailing list有点不活跃,所以YMMV。
https://stackoverflow.com/questions/8379686
复制相似问题