2013-11-20 64 views
0

在單元測試中作爲副作用,我正在爲GUI的各個部分創建屏幕截圖。 我想在編譯文檔時使用這些屏幕截圖。將文件從單元測試保存到項目樹

因此我想將它們保存到源代碼樹中的一個目錄。

在運行junit測試時,有沒有可靠的方法來獲取源目錄root?

如果沒有,如何確保在使用eclipse和使用maven時使用cwd = project root運行單元測試?

回答

1

如果您在創建文件時沒有指定路徑,它會在項目根目錄自動創建,您是否可以在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目錄/主/資源中的文件。

希望我的回答有幫助

+0

謝謝,我已採取此方向。我正在檢查目錄的存在以確保我處於正確的位置。 –

0

你可以根據你的課程位置。這裏建議的解決方案是使用肯定會在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 ...

相關問題