Java 春季及;JUnit |如何禁用特定测试类的spring测试上下文缓存?

Java 春季及;JUnit |如何禁用特定测试类的spring测试上下文缓存?,java,spring,caching,Java,Spring,Caching,我的代码有许多集成测试类-ServiceTest1,ServiceTest2服务测试n。 使用相同的测试上下文(MyAppContext.xml)使用spring执行所有测试 如下面的代码片段所示,ServiceTest1测试上下文要求覆盖其中一个bean,并且该更改仅与ServiceTest1相关 执行时,ServiceTest1按预期工作。但是,当执行其他测试(例如代码段中的ServiceTest2)时,由于spring正在缓存MyAppContext.xml测试上下文,并且ServiceT

我的代码有许多集成测试类-
ServiceTest1
ServiceTest2
<代码>服务测试n。 使用相同的测试上下文(
MyAppContext.xml
)使用spring执行所有测试

如下面的代码片段所示,
ServiceTest1
测试上下文要求覆盖其中一个bean,并且该更改仅与
ServiceTest1
相关

执行时,
ServiceTest1
按预期工作。但是,当执行其他测试(例如代码段中的
ServiceTest2
)时,由于spring正在缓存
MyAppContext.xml
测试上下文,并且
ServiceTest1
测试上下文操纵与其他测试冲突,因此它会失败,并出现spring初始化错误

我正在寻找一种避免缓存
ServiceTest1
testcontext的方法(例如基于@ContextConfiguration使其缓存键唯一)。 请注意,完全禁用缓存不是需要的解决方案

有什么想法吗

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class ServiceTest1 {

    // some tests ...

    @Configuration
    @ImportResource({"classpath*:MyAppContext.xml"})
    static class Context {

        @Bean
        @Primary
        ServiceOne serviceOne() {
            // instantiate something ...
        }
    }
}


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:MyAppContext.xml"})
public class ServiceTest2 {

    // some tests ...

}
谢谢

编辑:
Spring初始化错误包括:

java.lang.IllegalStateException:未能加载ApplicationContext

原因:org.springframework.beans.factory.parsing.beans.definitionParsingException:配置问题:无法从URL位置[classpath:/WEB-INF/applicationContext security]导入bean定义

有问题的资源:URL[文件:/path/to/MyAppContext.xml];嵌套异常为org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:检测到重复

有问题的资源:类路径资源[WEB-INF/applicationContext security.xml]


使用
@DirtiesContext
注释,将其添加到类级别

然后,它将在测试类执行后刷新spring应用程序上下文


文档:

使用
@DirtiesContext
注释,将其添加到类级别

然后,它将在测试类执行后刷新spring应用程序上下文


文档:

谢谢,但这似乎不起作用。很明显,
ServiceTest1
是问题所在,但我不确定冲突在哪里。即使我单独执行
ServiceTest2
,它也会失败。如果ServiceTest2不能单独工作,那么更改ServiceTest1将无法解决问题。当我从
ServiceTest1
中删除特定的上下文配置时,您需要发布更多的ServiceTest2和SpringXML文件,这样一切都可以正常运行。嗯,好的,您一定不能单独正确执行ServiceTest2。仍然需要查看更多的代码/配置谢谢,但这似乎不起作用。很明显,
ServiceTest1
是问题所在,但我不确定冲突在哪里。即使我单独执行
ServiceTest2
,它也会失败。如果ServiceTest2不能单独工作,那么更改ServiceTest1将无法解决问题。当我从
ServiceTest1
中删除特定的上下文配置时,您需要发布更多的ServiceTest2和SpringXML文件,这样一切都可以正常运行。嗯,好的,您一定不能单独正确执行ServiceTest2。仍然需要查看更多的代码/配置