1

我正在尝试使用 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.

后来,当我打电话时,Entitymanager 失败了,em.flush()因为他们希望事务处于活动状态。是否有可用于 JUnit 测试的轻量级事务实现?

编辑:

我最终使用了 GuiceRunner。这非常简单...... http://fabiostrozzi.eu/2011/03/27/junit-tests-easy-guice/

4

2 回答 2

2

要通过 INFO 消息,您需要在类路径中包含 jta api,但随后您将遇到实际上没有实时事务的问题。

于 2012-07-10T15:25:25.913 回答
2

您可以在单元测试中使用openEJB,这应该可以按预期工作。

但是:一旦您在测试中需要事务(又名“平台服务”),我就会开始将其称为集成测试——在这种情况下,我建议使用 Arquillian进行轻量级的容器测试。您将能够针对自己的基础设施进行测试,并使用真实世界的设置,例如。交易。

更新:我忽略了您已经在使用 JEEUnit。这使我的答案非常过时...

于 2012-07-10T06:16:10.297 回答