【发布时间】:2019-03-09 18:11:32
【问题描述】:
我们在生产代码中有一些方法用@Transaction(propagation = REQUIRES_NEW) 注释。因此,使用@Transactional/@Rollback 注释测试类仍然会导致数据库被污染。我希望有一种方法可以在此类的所有测试完成后从相关表中删除记录。但是,@AfterClass 方法必然是静态的,所以我如何访问 Spring 提供的 EntityManager 和/或 Spring Data 存储库。我们目前使用的解决方案是使用 @DirtiesContext(mode=AFTER_CLASS) 注释测试类,但是如果您忘记也覆盖该测试类的数据源 URL,这会导致非常痛苦的体验。
那么,这可以通过更惯用的 Spring/JUnit 方式实现吗?
【问题讨论】:
标签: spring junit integration-testing