2012-08-22 75 views
0

我们正在为Java EE应用程序编写集成测试,并且无法就一件事达成一致。Java集成测试。何时使用嵌入式服务器?

集成测试应该在嵌入式服务器上运行吗?

在完整的Java EE服务器上运行测试真的有什么好处吗?

我在这个方法中看到很多问题,最大的问题是我们应该通过@Remote界面或者通过一些Web Service以某种方式公开EJB商业方法。

此外,我们计划在Jenkins服务器上运行这些集成测试。我们已经有了一个构建配置,可以打包我们的应用并将其部署到Glassfish服务器上。所以,也许有这个想法,应该影响我们的决定,无论是使用嵌入式还是真实服务器?

回答

2

要执行针对@Local视图的测试,您要么将容器嵌入到测试vm中,要么将测试嵌入到容器中。

你可以吃你的蛋糕,也可以吃它...做两个:) Arquillian API是足够好的,你可以有一个测试,可以配置做这两个。

当你用一个像OpenEJB这样的嵌入式容器开发时,快速运行测试,然后在Jenkins中再次运行,看起来像生产服务器(这会变慢)。

不要把自己限制在想你只需要选择一个或另一个。

2

如果服务器嵌入或不嵌入,这并不重要。但它需要启动速度非常快,内存消耗量低。这样你可以在开发者机器上本地运行它们。优点:

  • 测试将被更频繁地运行,虫子会更迅速地抓住
  • 更容易编写和调试测试时,你可以快速的本地运行
  • 它允许(容易)TDD
  • 如果没有在开发人员计算机上运行的集成测试(例如REST API),某些功能将无法生成。

而且您不需要公开EJB @Remote或作为Web服务在嵌入式服务器中运行。事实上,你根本不需要修改它们。如果你决定使用Java EE集成框架,我不这么认为,但是你可以看看Arquilian

我也可以建议OpenEJB作为本地集成测试的快速EJB容器。

在Jenkins上对真实(生产)服务器测试运行集成测试提交代码。作为多一个安全网非常有用。但是开发人员应该有自己的一种方法来在开发之前和提交之前测试他们的代码。

+0

谢谢。你有一些有效的点。但是,正如我所说的,集成测试将主要作为Jenkins构建的一部分运行,并且该应用程序将仍然部署在远程服务器上。这就是为什么我怀疑,如果全功能的服务器已经运行,是否值得启动嵌入式服务器。是的,我已经在尝试Arquillian。另外,我们的一些同事声称集成测试应该在真实环境中运行。我很困惑:) – jFrenetic

+0

因此,考虑到你的编辑,你认为作为CI的一部分,最好在真实环境中运行IT。 – jFrenetic

+0

是的,它更好。詹金斯在后台运行,速度并不那么重要。 – dcernahoschi

相关问题