我目前在尝试让微数据与事务一起工作时遇到了一些问题。
据我所知,一个流:
<- 开始事务/gh>
- 执行write 1 <
- 抛出异常/gh>
应该产生一个未修改的数据库,即事务应该回滚。
我创建了一个最小的例子,使用微web启动,一个简单的实体,存储库和使用@Transactional, SynchronousTransactionManager等不同尝试的测试,但在所有情况下,数据库修改在事务后是可见的。最小的例子可以在这里找到:https://github.com/Spellmaker/transactiontestgradle/
测试类的直接链接:https://github.com/Spellmaker/transactiontestgradle/blob/master/src/test/kotlin/com/example/TransactiontestgradleTest.kt
显然,配置或我对事务的理解一定有问题。那么到底是哪一个呢?
正如gitter上的回答,@MicronautTest为每个测试启动一个事务并对其进行管理。要在测试中测试事务,必须通过
手动禁用此行为@MicronautTest(事务性= false)