【发布时间】:2018-05-28 06:55:02
【问题描述】:
我正在开发一个 Spring-Boot Web 应用程序。编写集成测试的常用方法是:
@Test
@Transactional
@Rollback(true)
public void myTest() {
// ...
}
只要只有 一个线程 工作,它就可以很好地工作。如果有多个线程,@Rollback 将无法工作。
但是,当使用 Spring REST 模板测试 @RestController 类时,总是多个线程(按设计):
- 作为客户端运行 REST 模板的测试线程
- 接收和处理请求的服务器线程
因此,您不能在 REST 测试中使用 @Rollback。问题是:您改用什么来使测试可重复并让它们在测试套件中很好地发挥作用?
@DirtiesContext 有效,但这是一个糟糕的选择,因为在每个 REST 测试方法之后重新启动 Spring 应用程序上下文会使套件的执行速度非常慢;每个测试需要几毫秒才能运行,但重新启动上下文需要几秒钟。
【问题讨论】:
标签: java spring rest testing spring-boot