2015-04-29 52 views
0

当我使用ClasspathSuite运行JUnit测试,并且其中一个单元测试想要使用相对路径加载文件时,它将使用ClasspathSuite的基本路径而不是单元测试的基本路径。运行ClasspathSuite时解析相对路径

因此,举例来说,如果单元测试尝试加载一个文件是这样的:

File file = new File("src/test/resources/test.xml"); 

它会尝试相对于ClasspathSuite的该文件的位置,而不是相对于单元测试的位置加载。

有什么方法可以改变它吗?

回答

0

我假设你使用的是eclipse。使用MYClass.class.getClassLoader().getResourceAsStream(<fileName>)。因为它是在资源getClassLoader()将能够轻松获得文件的位置,如果你使用的是Eclipse。您的代码将是,

File file = new File(MYClass.class.getClassLoader().getResourceAsStream("test.xml")); 
+0

我使用eclipse,但我不希望我的代码依赖于它。除了'File'不会将'InputStream'作为构造函数的参数。 –

+0

呵呵,错过了'流'点。将'inputstream'更改为字符串,如图所示http://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string :)。根据我的知识,它应该在所有的环境中工作,而不是特定于日食。 – Abhishek

+0

我不想更改我的代码,只是为了让测试在ClasspathSuite中运行,当它运行良好时运行测试独立程序。更重要的是,我随后想将xml解析为一个'File',所以'String'对我来说没有多大用处。 –