【发布时间】:2020-06-07 07:40:21
【问题描述】:
在下面的代码中
@DataJpaTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE)
public class GenreDaoJpaTest{
@Autowired
private TestEntityManager entityManager;
@Autowired
private GenreRepository dao;
....
}
当我添加 @Transactional(propagation = Propagation.NOT_SUPPORTED) 以在每次测试后取消回滚时,我遇到了异常:
ava.lang.IllegalStateException: No transactional EntityManager found
at org.springframework.util.Assert.state(Assert.java:73)
at org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager.getEntityManager(TestEntityManager.java:237)
at org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager.persist(TestEntityManager.java:92)
at ru.otus.ea.dao.GenreDaoJpaTest.init(GenreDaoJpaTest.java:38)
有没有办法自动连接TestEntityManager 而不是在测试中回滚事务?
【问题讨论】:
-
顺便说一句,不确定您是否知道-您也可以接受答案-这可以帮助人们过滤掉已接受答案的问题(并奖励帮助的人)。 .) (stackoverflow.com/help/someone-answers)
-
(当然——只有当答案确实解决了问题时才接受答案。)
-
感谢您的问题,我找到了如何将 DBRider @ExpectedDataset 与 DataJpaTest 一起使用的解决方案。在测试方法之后我遇到事务回滚问题,因此我在 db 中没有任何变化来与预期结果进行比较。 @Transactional(propagation = Propagation.NOT_SUPPORTED) 帮助我解决我的问题。
标签: spring-data spring-boot-test