@SpringBootTest和@Transactional导致测试冻结

时间:2017-05-12 22:31:40

标签: spring spring-boot spring-data-jpa spring-test spring-boot-test

合并@SpringBootTest@Transactional时,我的测试会冻结并永不复原。

我已经建立了问题here的演示。

由于getAgain导致的唯一约束违规,

@Before失败。为了解决这个问题,我通常会在每次测试后添加@Transactional above the class来自动回滚我的更改。但是,这会导致测试冻结并永远不会恢复。

知道为什么这两个注释不能很好地结合在一起吗?

1 个答案:

答案 0 :(得分:0)

或者,您可以使用ResourceDatabasePopulator初始化数据库,而不是@RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @SqlGroup({ @Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "/testbed.sql"), @Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, scripts = "/clear.sql") }) public class UserControllerTest {

/public

我已经对您的示例项目进行了更改,但它运行正常。 你可以在这里看到它们:springboottest-transactional