我正在尝试使用CDI/Weld和JEEUnit进行junit测试。我在启动时收到以下消息:
189 [main] INFO org.jboss.weld.Bootstrap - WELD-000101 Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.稍后,当我调用em.flush()时,Entitymanager会失败,因为它们期望事务处于活动状态。有没有轻量级的事务实现可以用于JUnit测试?
编辑:
我最终使用了GuiceRunner。这太简单了.http://fabiostrozzi.eu/2011/03/27/junit-tests-easy-guice/
发布于 2012-07-10 14:16:10
您可以在单元测试中使用openEJB,这应该会像预期的那样工作。
但:只要你在测试中需要一个事务(也就是“平台服务”),我就会开始称之为集成测试--在这种情况下,我推荐使用Arquillian进行轻量级的容器上测试。您将能够针对您自己的基础架构进行测试,并使用真实世界的设置。事务。
更新:我忽略了你已经在使用JEEUnit了。这使得我的回答变得相当过时。
发布于 2012-07-10 23:25:26
要通过INFO消息,您需要在类路径上具有jta api,但这样您就会遇到一个问题,即稍后实际上没有一个真正的事务。
https://stackoverflow.com/questions/11406971
复制相似问题