我有一个使用 EJB3 和 JPA 的 JEE5 应用程序。例如,我有一些 bean
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
我想为这些服务编写一些测试。我知道我可以使用像 OpenEJB 这样的可嵌入容器,但是由于 JPA 在 Java SE 中可用,我想知道我是否可以在测试中使用它? 我当然不会拥有所有
@PersistenceContext, @PersistenceUnit, @TransactionAttribute
可用的功能。所以我的问题是这是否值得尝试(手工制作的事务管理等)?还是应该使用嵌入式容器?我说的是集成测试(使用真实的内存数据库),而不是模拟周围的所有东西。
编辑:
还有一件事,因为我对在嵌入式容器中进行测试还很陌生。是否可以注入(inject),例如Mockito 的模拟作为对我的被测 bean 的 @EJB 依赖?还是在此设置中没有意义?
最佳答案
您可以使用 Java SE/JPA 测试很多东西。但是我们称之为集成测试的主要部分需要大量的努力来模拟事物,而有些如果没有 Arquillian 就无法实现。或类似的帮助。您是否希望将 EJB 事务功能等包含在您测试的内容中?如果是这样,您必须在尽可能接近生产的事务环境中实现测试。我强烈建议使用 ejb-testing-framework。
关于java - 可以用独立的 JPA 测试 EJB3/JPA 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805834/