2015-04-29 51 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'對我來說沒有多大用處。 –