gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:40 25 4
gpt4 key购买 nike

我最近开始使用一个大型的遗留企业 Java 应用程序。它主要建立在 Websphere Commerce 6 之上。它混合了 EJB 1.x 和 2.x,以及相当多的直接挂接到 Commerce API 的代码。

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

Arquillian已被建议作为集成测试的一个很好的选择。但是,它看起来更适合“现代”应用程序;大多数示例都使用 Java EE 5+ 和 Maven。我们正在使用 J2EE 和 Ant。我们目前还依赖于 Java 1.4,虽然我们有可能迁移到 Java 5,但我们不会很快升级到 EJB 3.x。我们也可能会坚持使用 Ant。

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

最佳答案

Arquillian has been suggested as a very good option for integration testing. However, it looks geared towards more "modern" applications; most of the examples make use of Java EE 5+ and Maven. We're using J2EE and Ant. We're also currently tied to Java 1.4, and while it may be possible for us to move to Java 5, we won't be upgrading to EJB 3.x any time soon. We're also likely to stick with Ant.

With these constraints in mind, is it possible to use Arquillian?

注意:我是 Arquillian 贡献者。我尽量不偏不倚地回答。

这实际上取决于您的测试是如何执行的。如果您尝试使用 Arquillian 对容器内测试的支持,那么您不太可能找到解决方案。 WebSphere Commerce 6 使用 WebSphere 6.0 作为底层容器,目前 Arquillian 不支持。如果您可以假设使用以 WAS 7.0 或 8.0 为基础的 WebSphere Commerce 版本,那么我的大部分回答都可以忽略,因为这些容器是受支持的。

您可以尝试使用 @RunAsClient 注释而不是容器从客户端运行测试,这更有可能成功。请注意,由于前面提到的 Arquillian 不支持 WAS 6,因此您需要在没有 @Deployment 注释方法的情况下以某种方式执行部署。

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

注意 - 与其他更新的容器相比,在 WebSphere 6.0 中构建对 Arquillian 的支持可能并非易事:

  • 首先,必须有部署文件的方法。我不确定是否可以移植 WebSphere 7 和 8 容器支持中使用的机制。
  • 在 Arquillian 中支持 WAS 6.0 的容器内测试可能需要支持 Servlet 2.4 协议(protocol)才能运行测试。目前,Arquillian 支持 Servlet Spec 2.5 和 3.0 来打包它的 ServletTestRunner。如果无法使用 JMX 协议(protocol)和随附的 JMXTestRunner,这当然是必要的。

Or do better alternatives exist for integration testing legacy enterprise Java applications?

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

您可能会找到 JUnitEE如果您愿意将 JUnitEE TestRunner 打包到您的文件中,它会更好地满足您的需求;请注意 JUnitEE 的最后一个版本是在 2004 年,mailing list有点不活跃,所以 YMMV。

关于java - 使用 Arquillian 集成测试遗留 Java EE 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8379686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com