合并@SpringBootTest
和@Transactional
时,我的测试会冻结并永不复原。
我已经建立了问题here的演示。
由于getAgain
导致的唯一约束违规, @Before
失败。为了解决这个问题,我通常会在每次测试后添加@Transactional
above the class来自动回滚我的更改。但是,这会导致测试冻结并永远不会恢复。
知道为什么这两个注释不能很好地结合在一起吗?
答案 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