首页 文章

Arquillian和TransactionAttributeType.REQUIRES_NEW

提问于
浏览
2

在我的arquillian测试中,调用了许多应用程序方法,这些方法从数据库读取数据或创建数据并持久保存到数据库 . a)在某些时候调用带有 @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 注释的方法 . 测试失败,因为带注释的方法无法找到(在读取时返回0条记录)某些先前调用的方法(使用TransactionAttributeType.REQUIRED注释)持久存储的数据 . 当新事务打开时,这可能是正常行为 . 读取先前调用的方法中的数据并将它们作为参数传递给带注释的(TransactionAttributeType.REQUIRE)方法可以正常工作,但应该在REQUIRES_NEW方法中读取数据 . 使用TransactionAttributeType.REQUIRES_NEW时,在其他测试中会出现相同的问题 . 是否有解决此案例的解决方法?

b)我还提到arquillian在使用 @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 注释的方法方面存在问题 . 就像这些方法中的代码根本没有执行一样 .

我目前解决这两个问题的方法是创建一个Mock类来覆盖有问题的方法 . 在b的情况下,重写的方法用 @TransactionAttribute(TransactionAttributeType.SUPPORTS) 注释 .

1 回答

  • 0

    在调用使用TransactionAttributeType.REQUIRED_NEW注释的方法之前,尝试使用flush()方法然后使用EntityManager的refresh() .

相关问题