EJB 3.1 Embedded API - 单元测试EJB + JPA实体

时间:2010-05-05 15:19:40

标签: java unit-testing jpa ejb-3.1 jpa-2.0

有没有人这样做或试图为先前存在的项目做这件事? 似乎有两种选择可以使用embedded EJB API基本上使用以下类

javax.ejb.embeddable.EJBContainer

期望配置的glassfish v3安装可用(应用程序范围的资源将使这更容易)。

另一种方法是使用嵌入式glassfish jar文件和embedded glassfish API

我正在寻找那些已经或正在执行此操作的人员的反馈,链接到博客等,并使用简单的EJB&测试用例是一打一打。

如果您已经使用任何其他EJB 3.1容器完成此操作,请随时分享。

  1. 您是否使用任何特定测试框架的原因除了它是您首选的工具之外?
  2. 你使用了哪种JPA 2.0实现,并且有特殊原因吗?
  3. 如果您使用上述策略中使用过的玻璃鱼?如果没有,那么你使用了哪个EJB 3.1容器?
  4. 如果您成功完成了这项工作,是否值得付出努力,您是否会再次为另一个现有项目执行此操作?

2 个答案:

答案 0 :(得分:4)

  

这里似乎有两个选项,要么使用嵌入式EJB API(...),要求配置的glassfish v3安装可用。

不,您可以也在项目中使用最小域名。

  

我正在寻找那些已经或正在执行此操作的人员的反馈,链接到博客等,并使用简单的EJB&测试用例是一打一打。

我在我的宠物项目(Maven下)完成了EJB 3.1和JPA的集成测试,受到Unit Testing EJBs and JPA with Embeddable GlassFish的启发。阅读它绝对值得。

  

您是否使用任何特定测试框架的原因除了它是您首选的工具之外?

不。

  

您使用了哪种JPA 2.0实现,是否有特定原因?

我使用了EclipseLink(因为它当时可用)。

  

如果你使用了玻璃鱼,你使用了上述哪种策略?如果没有,那么你使用的是哪个EJB 3.1容器?

我使用了嵌入式EJB API,我计划在其他Java EE 6容器可用时运行我的代码。

  

如果您成功完成了这项工作,是否值得付出努力,您是否会再次为另一个现有项目执行此操作?

好吧,我认为集成/功能测试具有价值,并且发现嵌入式EJB API 非常适合。即使我不认为我的样本是一个真实的项目,使用它并不痛苦。

对于更复杂的情况,我会关注maven-embedded-glassfish-plugin(另请参阅this answer)。

答案 1 :(得分:1)

我编写了一个small tutorial on my blog,用于使用嵌入式glassfish 3.1使用javax.ejb.embeddable.EJBContainer对EJB进行单元测试。它有一些陷阱,我通过修改默认的嵌入式glassfish域并将一些属性调用createEJBContainer()来解决这个问题。