【发布时间】:2014-06-02 16:39:40
【问题描述】:
我在测试多个服务的集成测试时遇到问题。我必须禁用事务性才能使测试正常工作,而不会出现任何与事务性相关的运行时错误。集成测试在单独运行时运行良好,但在与启用事务的其他测试一起运行时,会产生以下运行时错误:
Running 48 integration tests... 43 of 48
Failure: Tests the happy case flow of MyService.(MyServiceSpec)
org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is rolled back; nested exception is org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has bee
n marked as rollback-only
Caused by: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
... 4 more
Completed 43 integration tests, 1 failed in 0m 32s
我已经得出结论,运行时发生的原因是因为其他使用事务的集成测试,因为我通过成功运行所有禁用事务的测试来测试这一点;并且在使用启用事务的单个集成测试运行测试时失败。
如何在 Grails 中混合事务性和非事务性集成测试?
平台详情:
Grails-2.3.6 Windows 7 64 位。 JDK v6。
【问题讨论】:
-
插话,我也有这个问题,在 Grails 2.3.8 中。我的测试是
static transactional = false并且单独运行良好,但运行整个套件时失败。
标签: grails integration-testing spring-transactions grails-2.3