使用新的 Spring 上下文开始 JUnit 测试
Start JUnit test with fresh Spring Context
我使用 JUnit4
编写了两个单元测试 classes。他们都 运行 分别很好,但是 运行 一个接一个地测试它们(例如通过 mvn 测试),第二次测试失败。
第二次测试失败的原因是第一次测试修改了第一次测试中的一个bean。第二个测试想要使用这个 bean 的新实例。
单元测试应该为每个单元测试提供一个新的上下文class。 Spring 首先-class 支持上下文缓存,我想禁用它。我如何配置 Spring
为每个单元测试 class 重新启动一个新的 Context
?
我的测试 classes 配置如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:a.context.xml")
public class AUnitTest {
@Test
public void someTestMethod{
doSomeFancyStuff();
}
}
您可以在测试方法(或测试class)上使用@DirtiesContext
。 Spring ApplicationContext 将在测试执行后重新加载。
您也可以在测试后使用 Mockito.reset()。
这将为您节省 Spring 上下文的加载时间。
我使用 JUnit4
编写了两个单元测试 classes。他们都 运行 分别很好,但是 运行 一个接一个地测试它们(例如通过 mvn 测试),第二次测试失败。
第二次测试失败的原因是第一次测试修改了第一次测试中的一个bean。第二个测试想要使用这个 bean 的新实例。
单元测试应该为每个单元测试提供一个新的上下文class。 Spring 首先-class 支持上下文缓存,我想禁用它。我如何配置 Spring
为每个单元测试 class 重新启动一个新的 Context
?
我的测试 classes 配置如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:a.context.xml")
public class AUnitTest {
@Test
public void someTestMethod{
doSomeFancyStuff();
}
}
您可以在测试方法(或测试class)上使用@DirtiesContext
。 Spring ApplicationContext 将在测试执行后重新加载。
您也可以在测试后使用 Mockito.reset()。 这将为您节省 Spring 上下文的加载时间。