java - 如何对 Java EE 代码进行单元测试?

标签 java unit-testing junit ejb-3.0 java-ee-5

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

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

所以我想知道,

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

非常感谢...

最佳答案

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

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

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

如果您想运行 in container 测试,那么您确实可以使用嵌入式容器,我目前的偏好是 GlassFish v3,即使对于 Java EE 5(我可能错了,但我对最新 JBoss 版本的开始时间感到非常失望,所以它并没有引起我的太多关注)。见帖子GlassFish Embedded Reloaded, an appserver in your pocket示例代码(您可以在测试中使用)或 Using maven plugin for v3 embedded glassfish (如果您使用的是 Maven)。

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

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

关于java - 如何对 Java EE 代码进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947846/

相关文章:

java - IntelliJ 2017 中没有代码覆盖率

java - 为什么在 Mockito 测试期间源代码另有说明时 protected 最终字段为空?

java - 将测试文件添加到 Netbeans 6.7.1 中的 Junit 测试 - getResource 问题,构建目录中缺少文件

c# - 跳过通用测试类中特定类型的测试方法

java - 如何使用 javadb JUnit 测试 jpa 代码而不修改原始数据库?

java - java 对象数组

java - 有界通配符不适用于映射中的列表插入

java - System.out.println 在客户端不起作用

java - 在调整应用程序窗口大小之前,jPanel 不会刷新

java - 使用 testng 测试接口(interface)实现