繁体   English   中英

SpringJunit4ClassRunner的类路径在哪里,以及如何直接指向我的OS中的文件?

[英]Where is classpath from SpringJunit4ClassRunner, and how to point to file in my OS straightly?

我从JUnit(在我的工作区中运行)访问在Tomcat中运行的Spring上下文时遇到问题。

我的代码演示:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
    "classpath:/WEB-INF/applicationContext-resources.xml"
})
public class JUnitAccessSpringContextTest
{
}

不幸的是,以上代码在我的情况下不起作用,因为在部署到Tomcat之前,工作空间中“ applicationContext-resources.xml”的值将被替换。

题:

  1. “ classpath”在这里是什么意思?

  2. 我可以在此处更改“类路径”或附加新值,例如安装的tomcat的位置吗?

若要解决上述问题,另一种方法是让@ContextConfiguration直接指向该文件。 它可以在我的系统中工作(如以下代码所示),但由于我的“ path_to_my_tomcat_application”是硬编码的,因此不能真正用于实际用途。

  1. 是否可以将某种类型的变量插入@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版本-它不应影响正在运行的项目。 我对吗?

另一种替代方法是将TOMCAT_HOME设置为Eclipse的类路径,并将相对路径写入@ContextConfiguration。

例如,如果将TOMCAT_HOME / project_name设置为Eclipse的类路径,则以下代码可以正常工作:

@ContextConfiguration(locations = {
    "classpath:WEB-INF/applicationContext-resources.xml"
})

但是,由于每次部署的“ project_name”互不相同,所以我无法将其放入Eclipse路径,->我只能将整个tomcat主页(TOMCAT_HOME)放入Eclipse类路径。 但是在这种情况下,以下代码不起作用。 为什么?

@ContextConfiguration(locations = {
    "classpath:*/WEB-INF/applicationContext-resources.xml"
})

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM