25

我想问一下您测试 Java EE 代码的首选方式?

我发现只有三个项目,它们试图帮助在 Java EE 环境中编写单元测试代码:

所以我想知道,

  • 是否有任何框架有助于为 Java EE 代码编写 (j) 单元测试?
  • 您是否使用嵌入式 Java EE 服务器,例如 jboss 或 glassfish v3?
  • 你自己做模型和注入吗?

非常感谢...

4

4 回答 4

24

如果通过单元测试你的意思是......单元测试(单独测试一个单元),那么你实际上不需要任何特定的框架,因为 EJB3.0 只不过是带注释的 POJO,因此可以相对容易地进行测试而无需任何特殊的夹具.

现在,如果你指的是其他东西——比如集成测试功能测试——那么,的,工具可以帮助和简化事情(但你应该真正开始使用正确的术语:) 我假设这就是你的想法.

首先,JUnitEE似乎已经过时和过时,我什至不确定它对 EJB3.x 有什么影响。其次,我对CactusJava EE 5 支持印象不深,而且不得不部署 Cactus 测试很痛苦(我认为 Cactus 对 J2EE 1.4 来说很好,但现在有点过时了)。所以这给我们留下了Ejb3Unit,在我看来这是最好的选择,特别是如果你想用完容器测试,即没有真正部署应用程序(更快)。

如果你想在容器测试中运行,那么你确实可以使用嵌入式容器,我目前的偏好是 GlassFish v3,即使是 Java EE 5(我可能错了,但我对最新 JBoss 的开始时间感到非常失望发布,所以它并没有引起我的太多关注)。请参阅GlassFish Embedded Reloaded 后,您口袋中的一个应用服务器以获取示例代码(您可以从测试中使用)或Using maven plugin for v3 embedded glassfish(如果您使用的是 maven)。

另一种选择是使用Cargo打包和部署您的应用程序,然后针对已部署的应用程序运行一些测试(例如使用 Selenium 或 BDD 工具)。如果您想使用不提供任何嵌入式 API 的容器运行端到端测试,这可能会很有用。

所以,为了回答你的最后一个问题,我确实会使用可用的工具,也许是它们的组合,用于不是单元测试并且不会自己模拟/注入东西的测试,除非它们不能满足我可以满足的一些需求现在想不起来。

于 2009-12-22T22:57:34.257 回答
2

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

于 2009-12-23T06:53:03.450 回答
2

我一直面临着在 Java EE 6 容器(准确地说是 Glassfish v3)中运行基于 JUnit 的集成测试的同样问题,经过大量浏览和搜索,我找不到真正适合我需要的解决方案,所以我自己写了,现在在 Google Code 上以jeeunit的形式发布。

我不会称它为测试框架,它实际上只是提供 JUnit 和 Embedded Glassfish 之间粘合剂的少数类。

总体思路类似于 Cactus,您的测试在容器中运行并由外部的 servlet 触发。

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

于 2010-05-11T18:40:45.143 回答
2

我需要测试一个 CDI 应用程序,并编写了一个自定义 JUnit 运行程序,该运行程序运行 Web 容器之外的所有内容。

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

它适用于 Java SE,还支持用于测试 Web 应用程序的虚拟请求、会话和对话范围。

它又小又快,当您有大量单元测试时,这非常棒。

于 2011-11-18T23:25:11.150 回答