2009-12-22 238 views
24

我想问你的首选方法来测试Java EE代码?你如何测试Java EE代码?

我发现只有三个项目,正试图帮助在Java EE环境的代码单元测试:

所以我想,

  • 是否有帮助编写(j)Java EE代码的单元测试的框架?
  • 您是否使用嵌入式Java EE服务器,如jboss或glassfish v3?
  • 你模拟并注入自己?

非常感谢......

+0

请参阅http://stackoverflow.com/questions/1733805/where-can-i-find-good-unit-testing-resources-for-ejb-and-j2ee – ewernli 2009-12-22 17:23:17

+0

Antoher过时的项目:http:// sourceforge.net/projects/mockejb/最后发布日期:2004-09-04 – marabol 2009-12-22 17:36:31

+1

Adam Bien有关[本文](http://www.oracle.com/technetwork/articles/java/unittesting-455385.html)从2011年开始测试JavaEE。 – 2014-01-15 14:24:54

回答

24

如果单元测试你的意思是......单元测试(单独测试单元),那么你其实并不需要,因为EJB3任何特定的框架。 0只不过是带注释的POJO,因此可以在没有任何特殊夹具的情况下进行相对简单的测试。现在

,如果你的意思是别的东西 - 就像集成测试功能测试 - 那么,,工具可以帮助和简化的东西(但你真的应该开始使用正确的术语:)我”我会认为这是你的想法。

首先,JUnitEE看起来已经过时了,我甚至不确定它对EJB3.x有什么意义。其次,的Java EE 5 support并没有给我留下深刻的印象,并且不得不部署仙人掌测试是件痛苦的事情(我认为仙人掌对于J2EE 1.4来说很不错,但现在有点过时了)。所以这给我们留下了Ejb3Unit这在我看来是最好的选择,特别是如果你想运行出容器测试,即没有真正部署应用程序(更快)。

如果你想运行在容器测试,那么你确实可以使用嵌入容器和我目前倾向于去GlassFish的第三版,甚至对Java EE 5(我可能是错的,但我对漂亮的失望从最新的JBoss发布时间开始,所以没有引起我的注意)。请参阅GlassFish Embedded Reloaded, an appserver in your pocket以了解示例代码(可以从您的测试中使用)或Using maven plugin for v3 embedded glassfish(如果您使用的是maven)。

另一种选择是将应用程序打包并部署到Cargo,然后针对部署的应用程序(例如使用Selenium或BDD工具)运行一些测试。如果要使用不提供任何嵌入式API的容器运行端到端测试,这可能很有用。因此,为了回答你的最后一个问题,我确实会使用可用的工具,也许是它们的组合,用于不是单元测试的测试,并且不会自己模拟/注入东西,除非它们不覆盖某些东西需要我现在无法想象的。

+0

我听说Cactus项目正在与新的首席开发人员Petar Tahchiev一起恢复生机。 JSFUnit基于仙人掌。 – cetnar 2009-12-23 07:36:10

+0

@cetnar哦,很高兴知道!实际上,我可能过于关注EJB3,完全忘了JSF。非常感谢您提供这些信息。 – 2009-12-23 07:49:45

+0

非常感谢。 我想,我会为我所有的EJB pojos创建cunstructors,以便在没有任何反射的情况下进行注入。货物对于集成测试是非常重要的。谢谢! – marabol 2009-12-24 09:37:41

2

由于您对单元测试感兴趣,我推荐JUnit。您可以单元测试核心类中的方法。如果您在使用JUnit编写单元测试用例时遇到困难,那么设计可能不是模块化的,而且它是高度耦合的。首先关注核心功能并使用JUnit进行测试。

2

我一直在面对基于Java EE 6容器中的JUnit进行集成测试(确切地说是Glassfish v3)的相同问题,并且经过大量浏览和搜索之后,我找不到解决方案非常适合我的需求,所以我写了我自己的,现在在Google Code上发布为jeeunit

我不会称之为一个测试框架,它实际上只是一个提供JUnit和嵌入式Glassfish的之间的胶类屈指可数。

的总体思路是相似的仙人掌,你的测试容器中运行,并得到由来自外部的一个servlet触发。

jeeunit支持JUnit 4,Glassfish v3和CDI,并像Ant或Maven Surefire一样生成标准XML JUnit报告(实际上,我重用了Ant的一些代码来生成报告)。

1

我有一个要求,测试CDI应用程序中写道,Web容器的外部运行一切自定义的JUnit运行。

http://jglue.org/cdi-unit/

适用于Java SE和还支持虚拟请求,会话和会话作用域的测试Web应用程序。

它体积小,速度快,这是伟大的,当你有很多的单元测试。