Mih*_*238 4 spring spring-mvc spring-test
我正在使用Spring框架编写一些集成测试。对于不同的集成测试类,我有不同的SQL脚本。像这样:
@ContextConfiguration(classes = ...)
@Sql("classpath:sportCenter-test.sql")
public class SportCenterResourceIT {
...
}
Run Code Online (Sandbox Code Playgroud)
除了在每次测试之前执行SQL脚本(而不是每个类一次)的事实之外,所有其他功能都可以正常运行。我已经搜索了一段时间的spring文档,但是找不到与该选项相关的东西。
有人可以给我一个提示吗?
小智 6
我用这种方式来解决问题:
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@Sql("classpath:sql/DataForRouteTesting.sql")
public class MyTest {}
Run Code Online (Sandbox Code Playgroud)
每次都执行脚本,但不存在主键冲突。
小智 5
org.springframework.transaction.annotation.Transactional在类级别添加注释将防止@Sql脚本之间的任何更改在测试之间持久存在。因此,您的代码变为:
@ContextConfiguration(classes = ...)
@Sql("classpath:sportCenter-test.sql")
@Transactional
public class SportCenterResourceIT {
...
}
Run Code Online (Sandbox Code Playgroud)
这种组合将导致以下结果:
@Sql脚本将在每次测试之前运行| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |