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。仍然需要查看更多的代码/配置