3

结合时@SpringBootTest@Transactional我的测试冻结并且永远不会恢复。

我在这里建立了一个问题的演示。

getAgain 由于@Before. 为了解决这个问题,我通常会@Transactional在类上方包含一个类,以便在每次测试后自动回滚我的更改。但是,这会导致测试冻结并且永远不会恢复。

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

4

1 回答 1

0

或者,您可以使用@SqlGroup初始化数据库而不是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 {

我已经对您的示例项目进行了更改,并且效果很好。你可以在这里看到它们:springboottest-transactional

于 2017-06-14T10:55:55.357 回答