我遇到了从我的 JUnit(在我的工作区中运行)访问在我的 Tomcat 中运行的 Spring 上下文的问题。
我的代码演示:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:/WEB-INF/applicationContext-resources.xml"
})
public class JUnitAccessSpringContextTest
{
}
不幸的是,上面的代码在我的情况下不起作用,因为我的工作区中的“applicationContext-resources.xml”的值将在部署到 Tomcat 之前被替换。
问题:
“类路径”在这里是什么意思?
我可以在此处更改“类路径”或附加新值,例如我安装的 tomcat 的位置吗?
要解决上述问题,另一种方法是让@ContextConfiguration 直接指向文件。它在我的系统中工作(由以下代码显示),但它不适合实际使用,因为我的“path_to_my_tomcat_application”是硬编码的。
- 我可以将某种变量插入到@ContextConfiguration“文件”字符串中,例如从属性文件中读取一些字符串,或者通过 System.getenv(System_parameter_value) 插入系统值吗?
更改我的代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"file:<path_to_my_tomcat_application>/applicationContext-resources.xml"
})
public class JUnitAccessSpringContextTest
{
}
附加信息:
让事情变得更加复杂。我们在该项目的旧 Spring 版本(2.5)上运行。但我认为如果有必要,我至少可以更改 spring-test.jar 的版本——它不应该影响正在运行的项目。我对吗?