当前位置: 首页 > 面试题库 >

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

后凯捷
2023-03-14
问题内容

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

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

  • http://jakarta.apache.org/cactus/:上次发布时间:2009-01-18
  • http://www.junitee.org/:最新版本:2004-12-11
  • http://ejb3unit.sourceforge.net/:最新版本:2008-05-17

所以我想知道

  • 是否有任何框架可以帮助编写(j)Java EE代码的单元测试?
  • 您是否使用jboss或glassfish v3等嵌入式Java EE服务器?
  • 您会自己进行样机注入吗?

非常感谢…


问题答案:

如果用 单元测试的
意思是…单元测试(单独测试一个单元),那么您实际上不需要任何特定的框架,因为EJB3.0仅仅是带注释的POJO,因此可以相对容易地进行测试而无需任何特殊的固定装置。

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

首先,JUnitEE似乎已经过时且过时了,我什至不确定它对EJB3.x是否有用。其次,我不是被打动的Java
EE
5的支持
的仙人掌和无需部署仙人掌测试是痛苦的(我认为仙人掌是很好的J2EE
1.4,但现在已经过时了一下)。因此,这给了我们Ejb3Unit一个最好的选择,特别是如果您想用尽
容器 测试即没有真正部署应用程序(快得多)的话。

如果您想 在容器 测试中运行,那么您确实可以使用嵌入式容器,并且我当前的偏好设置是使用GlassFish v3,甚至对于Java EE
5(我可能是错的,但我对最新JBoss的启动时间感到非常失望。发布,因此没有引起我的太多关注)。请参阅《GlassFish Embedded
Reloaded》一文,这是一个放在口袋里的应用服务器,以获取示例代码(可以在测试中使用),或将maven插件用于v3嵌入式glassfish(如果正在使用maven)。

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

因此,为回答您的最后一个问题,我确实会使用可用的工具(也许是它们的组合)来进行非单元测试并且不会自己模拟/注入内容的测试,除非它们不能满足我的某些需求。现在不考虑。



 类似资料:
  • 问题内容: 我是Java和junit的新手。我有以下要测试的代码。如果您能提出有关测试它的最佳方法的想法,将不胜感激。 基本上,以下代码与从集群中选出领导者有关。领导者在共享缓存上持有锁,并且如果领导者以某种方式释放了对缓存的锁定,则领导者的服务将恢复并处置。 我如何确保领导者/线程仍保持对缓存的锁定,并且在执行第一个线程时另一个线程无法恢复其服务? 问题答案: 作为测试框架的替代方法(或使用JU

  • 问题内容: 到目前为止,我似乎避免了测试多线程代码的噩梦,因为它似乎太多了。我想问一下人们如何去测试依赖于线程的代码才能成功执行,或者人们如何去测试那些仅在两个线程以给定方式交互时才会出现的问题? 对于当今的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这一恕我直言上将很有用。 问题答案: 看,没有简单的方法可以做到这一点。我正在开发一个本质上是多线程的项目。事件来自操作系统,我必须同

  • 问题内容: 我目前正在编写Java客户端服务器应用程序。所以我想实现两个库,一个用于客户端,一个用于服务器。客户端服务器通信具有非常严格的协议,我不打算使用JUnit进行测试。 作为构建工具,我使用Maven和Husdon Server进行持续集成。 实际上,我对如何测试这些客户端/服务器库没有什么好主意。 我得到以下方法: 只需编写一个虚拟客户端来测试服务器,然后编写一个虚拟服务器来测试客户端。

  • 问题内容: 我有一段代码,期望用Java UUID()填充响应对象的一个​​属性。 如何从外部对代码进行单元测试以检查此行为?我不知道会在其中生成UUID。 需要测试的示例代码: 问题答案: Powermock和静态模拟是前进的道路。您将需要以下内容: 请注意,可以在带有@Before注释的方法中实现静态模拟,因此可以在需要UUID的所有测试用例中重新使用该静态模拟,以避免代码重复。 初始化静态模

  • 问题内容: 我想为一些连接到数据库,运行一个或多个查询然后处理结果的代码编写一些单元测试。(实际上没有使用数据库) 这里的另一个开发人员编写了我们自己的DataSource,Connection,Statement,PreparedStatement和ResultSet实现,这些实现将基于xml配置文件返回相应的对象。(我们可以使用伪造的数据源,并针对返回的结果集运行测试)。 我们在这里重新发明轮

  • 问题内容: 如何在单元测试中测试 hashCode()函数? 问题答案: 每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。 当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样: