我有兩種方法:
1.使用Java魔術
在這裏,我只是跑了一招
@Test
public void testpath(){
//gets me surefire report dir, lies just below /target
File testDir = new File(TestTargetPath.class.getResource("/").getPath());
//Get its parent! location of target
System.out.println("target? " + testDir.getParent());
//modify your properties object to set this as targetDir
}
此打印
target? /home/naishe/workspace/in/naishe/homeapp/target
2.閱讀co nfig文件作爲資源相對路徑
有兩個地方,把一個資源文件,如Maven的佈局配置屬性。
/src/main/resources
- 下面的文件將作爲工件的一部分。您可以使用getResource()
從任何類下/src/main/java
/src/test/resources
訪問它們 - 文件下的這一點,並沒有去神器的一部分,但它們可從任何類/src/test/java
。
因此,根據您的需要是什麼,你可以通過保持你的config.properties
下一個或兩個的地方和讀取配置文件:從目標目錄中運行
Properties props = new Properties();
InputStream stream = AppConfig.class.getResourceAsStream("/config.properties");
props.load(stream);
System.out.println(">> " + props.getProperty("targetDir"));
你的測試。那麼,爲什麼不製作'targetDir = .'? – Nishant
從目標目錄運行測試,但應用程序文件存儲在不同的位置和這些位置不是命令行參數或屬性配置文件呢。它們只能作爲參數傳遞給函數調用。 – Matthias