我们正在为Java EE
应用程序编写集成测试,但不能就一件事达成一致。
集成测试是否应该在嵌入式服务器上运行而不是真实的?
在完整的Java EE服务器上运行测试真的有什么好处吗?
我实际上在这种方法中看到了很多问题,最大的问题是我们应该通过EJB
接口或某些@Remote
以某种方式公开Web Service
业务方法。
此外,我们计划在Jenkins
服务器上运行这些集成测试。我们已经有一个构建配置打包我们的应用程序并将其部署到Glassfish
服务器上。因此,考虑到这一点,可能会影响我们的决定,无论是使用嵌入式还是真实服务器?
答案 0 :(得分:2)
如果嵌入了服务器并不重要。但它需要具有非常快的启动和低内存消耗。这样您就可以在开发人员计算机上本地运行它们。优点:
并且您不需要使用@Remote
或作为Web服务公开EJB以在嵌入式服务器中运行。实际上你根本不需要修改它们。如果您决定使用Java EE集成框架,我不会这样做,但您可以查看Arquilian。
我还可以建议OpenEJB作为本地集成测试的快速EJB容器。
在真实的(生产)服务器上运行Jenkins上的集成测试,测试提交的代码。作为一个更安全的网络是非常有用的。但开发人员应该有自己的方法来在开发和提交之前测试他们的代码。
答案 1 :(得分:2)
要对EJB的@Local
视图执行测试,您可以将容器嵌入测试vm中,也可以将测试嵌入到容器中。
你可以吃蛋糕,也可以吃它......同时做到这两点:) Arquillian API足够好,你可以配置一个可以配置的测试。
在使用像OpenEJB这样的嵌入式容器进行开发时快速运行测试,然后在Jenkins中再次针对看起来像生产服务器的东西运行它们(这将会更慢)。
不要限制自己认为只需要选择其中一种。