2012-02-21 22 views
0

我有一个有趣的问题,我有两个web服务定义在spring-conf.xml文件中,我有两个测试类,生活在相同的包每个类都有自己的链接到这个spring-conf.xml文件来调用他们特定的web服务。 我可以从我的一个测试类中获取bean,但是从另一个我不能获得并且代码在两个类中都是相同的。在一个测试中,我可以找到一个xml,在另一个我不能

在我有这个

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"); 

在第二个我的程序无法找到弹簧的conf文件,但在其他一个可以。 什么问题?

PS当我从远程调用它们时,两个wservices都可以正常工作,只有在本地我有这个问题。

测试的错误:

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 

谢谢您的建议。

+0

这些JUnit测试是否并行运行? – home 2012-02-21 12:58:10

+0

是的,确切地说。我用junit一个一个地运行它们,单独地 – 2012-02-21 13:18:46

回答

1

据我所知弹簧而不启动解释应用程序上下文路径“/”作为从将测试类的定义,并用起始pathes“/”作为完全合格的类路径位置同一封装的相对路径 (至少在testing environment)。也许你应该尝试使用起始“/”。

原来,不同的测试运行配置导致了这个问题(请参阅下面的注释)。

+0

谢谢你的回答。不,这不重要,因为comportaments是不同的,它们取决于我启动的测试,路径是相同的,两个类都在同一个包中,但一个可以找到我的文件,另一个不能。因为它们与我所说的位置相同,路径必须相同。无论如何,我尝试了你说的,但它不起作用 – 2012-02-21 13:25:36

+1

@Tommaso Bicego你如何运行测试?也许在运行配置(类路径等)方面存在差异。 – FrVaBe 2012-02-21 13:30:30

+0

你是一个天才。我刚才在我的运行配置中看过,第一个配置中有我的WebContent文件夹,而另一个则没有。我将它添加到其他运行配置,现在运行完美。谢谢! – 2012-02-21 13:37:27

相关问题