最新的EJB3/JPA单元测试框架

Dar*_*tle 20 java unit-testing jpa java-ee ejb-3.0

使用EJB 3/JPA启动新项目,主要是无状态会话bean和批处理作业.我过去在标准的Java webapps上使用过JUnit,它看起来效果很好.在EJB2中,单元测试很麻烦,需要一个运行容器(如JBoss)才能进行调用.现在我们将在EJB3/JPA中工作,我想知道公司正在使用什么来编写和运行这些测试.Junit和JMock是否仍然被认为是相关的,还是有其他新的框架,我们应该调查?

ewe*_*nli 11

恕我直言,是的他们仍然相关.

使用EJB3,您可以像常规POJO一样测试EJB,也可以使用嵌入式EJB容器作为托管bean.

对于JPA,您可以为测试嵌入JPA实现并使用内存数据库,也可以完全模拟数据层.

对于我上一个EJB项目,我编写了一些粘合代码来测试EJB,因为嵌入式EJB容器还不够成熟,但现在我会选择嵌入式EJB容器+ JUnit.

一些资源

但是还有很多其他人很容易找到


Pas*_*ent 8

对于单元测试,您可以使用JUnit,TestNG和您最喜欢的模拟框架(EasyMock,Mockito,PowerMock,JMockit,JMock).

对于集成测试,您可以从测试中启动/停止可嵌入容器(JBoss,OpenEJB,GlassFish v3).或者,看看Arquillian,这是一个最近用于Java EE应用程序集成测试的新玩家:

Arquillian项目的任务是提供一个简单的测试工具,开发人员可以使用它来为他们的Java应用程序(很可能是企业应用程序)生成广泛的集成测试.测试用例可以在容器内执行,与被测代码一起部署,或者通过与容器协调,充当部署代码的客户端.

为了避免在开发人员的构建环境中引入不必要的复杂性,Arquillian透明地与熟悉的测试框架(例如JUnit 4,TestNG 5)集成,允许使用现有的IDE,Ant和Maven测试插件启动测试而无需任何附加组件.

还要检查使用Arquillian 1.0.0 Alpha 1发布的改进Java EE的可测试性Arquillan空间.看起来很有趣的IMO.