SpringJUnit4ClassRunner每次测试都会加载上下文吗,还是只加载一次类?
问题的出现原因是SpringJUnit4ClassRunner默认只在每个测试套件中加载一次上下文,而不是每个测试都加载一次。这样可以节省每次测试的启动时间,提高测试的执行效率。如果一个测试破坏了应用上下文并需要重新加载,可以通过配置TestContext框架,在执行下一个测试之前重新加载配置并重建应用上下文。
解决方法是在测试类上使用`@DirtiesContext`注解。这样可以告诉SpringJUnit4ClassRunner在每个测试之后都重新加载上下文。示例代码如下:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = MyConfig.class) @DirtiesContext public class MyTest { // tests }
使用`@DirtiesContext`注解后,每次运行测试都会重新加载上下文,确保每个测试都是在新的上下文中执行。这可能会降低测试的执行效率,但可以确保测试之间的互不干扰。