我有一个有趣的问题,我在 spring-conf.xml 文件中定义了两个 Web 服务,并且有两个测试类位于同一个包中,并且每个类都有自己的到此 spring-conf.xml 文件的链接调用他们特定的网络服务。 我可以从我的一个测试类中获取 Bean,但不能从另一个测试类中获取 Bean,并且两个类中的代码是相同的。
我有这个
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class WSFirstTest {
private ApplicationContext context = new ClassPathXmlApplicationContext(
"WEB-INF/spring-conf.xml");
private WSFirst ws = (WSFirst) context
.getBean("serviceFirstDefault");
在另一处我有这个
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class WSSecondTest {
private ApplicationContext context2 = new ClassPathXmlApplicationContext(
"WEB-INF/spring-conf.xml");
private WSSecond ws = (WSSecond) context2
.getBean("serviceSecondDefault");
在第二个程序中,我的程序找不到 spring-conf 文件,但在另一个程序中可以找到。 有什么问题吗?
PS 当我从远程调用它们时,这两个 wservice 都工作正常,只有在本地我才遇到这个问题。
测试错误:
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [WEB-INF/spring-conf.xml]; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/spring-conf.xml] cannot be opened because it does not exist
感谢您的建议。
最佳答案
据我所知,Spring 会解释应用程序上下文路径,而无需将“/”开头作为定义测试类的同一包中的相对路径,并且以“/”开头的路径作为完全限定的类路径位置(至少在 testing environment 中)。也许您应该尝试使用开头的“/”。
事实证明,不同的测试运行配置导致了该问题(请参阅下面的评论)。
关于java - 在一个测试中我可以找到一个 xml,在另一个测试中我找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377697/