在單元測試中作爲副作用,我正在爲GUI的各個部分創建屏幕截圖。 我想在編譯文檔時使用這些屏幕截圖。將文件從單元測試保存到項目樹
因此我想將它們保存到源代碼樹中的一個目錄。
在運行junit測試時,有沒有可靠的方法來獲取源目錄root?
如果沒有,如何確保在使用eclipse和使用maven時使用cwd = project root運行單元測試?
在單元測試中作爲副作用,我正在爲GUI的各個部分創建屏幕截圖。 我想在編譯文檔時使用這些屏幕截圖。將文件從單元測試保存到項目樹
因此我想將它們保存到源代碼樹中的一個目錄。
在運行junit測試時,有沒有可靠的方法來獲取源目錄root?
如果沒有,如何確保在使用eclipse和使用maven時使用cwd = project root運行單元測試?
如果您在創建文件時沒有指定路徑,它會在項目根目錄自動創建,您是否可以在eclipse上執行測試或使用maven進行測試。
因此,如果指定相對文件夾的文件會去那兒:
public class TestFileCreation {
@Test
public void testFileCreation() throws IOException {
File f = new File("src/main/resources/hello.txt");
OutputStream ostream = new FileOutputStream(f);
String data = "Hello there !";
ostream.write(data.getBytes());
ostream.close();
}
}
將創建$ PROJECT/src目錄/主/資源中的文件。
希望我的回答有幫助
你可以根據你的課程位置。這裏建議的解決方案是使用肯定會在classpath中的類。那麼你可以使用class.getResource("")
。實施例
public class ResouceRoot {
public static String get() {
String s = ResouceRoot.class.getResource("").toString();
if (s.startsWith("jar:")) {
s = s.replace("jar:", "").replaceAll("!.*", "");
} else {
s = s.replaceAll("classes.*", "classes");
}
File f = new File(s.replace("file:", ""));
return f.getParentFile().getParentFile().getAbsolutePath();
}
public static void main(String[] args) throws IOException {
System.out.println(get());
}
}
(此代碼會給基dir來netbeans的項目,如果它們是從發射的netbeans或通過java -jar ...
)
謝謝,我已採取此方向。我正在檢查目錄的存在以確保我處於正確的位置。 –