【问题标题】:Run all JUnit tests indepentently in Eclipse, reloading Spring context each time在 Eclipse 中独立运行所有 JUnit 测试,每次都重新加载 Spring 上下文
【发布时间】:2014-09-11 08:01:36
【问题描述】:
目标:在 Eclipse 中找到一种方法来执行 JUnit 类中的所有测试,该类在每次测试之前重新加载 Spring 上下文,而不仅仅是一次。
场景:我继承了使用 HSQL 内存数据库的 DAO 测试套件,该数据库在上下文加载时使用一些示例数据进行初始化。在运行测试时,我注意到如果执行了整个类,则所有测试都通过了。但是单独执行时,特定的测试方法会失败。显然,测试不是独立的,早期的测试正在改变数据库状态并且不会自行清理,后来的测试取决于通过。我想确定哪些测试是依赖的并且在自己运行时会失败,而不必手动执行每个测试或修改代码。
【问题讨论】:
标签:
java
eclipse
spring
unit-testing
junit
【解决方案1】:
你可以在你的测试类中使用@DirtiesContext:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MyConf.class })
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public void MyTestClass {
这将在每个测试方法之后重新加载上下文。