2017-10-10 63 views
1

我有一個在Java gradle中配置的測試套件。 Junit測試涉及io文件寫入/讀取 當我使用窗口機和gradlew.bat test時,所有測試都通過。但是,如果我嘗試在linux機器上運行相同的測試套件,則所有測試都涉及寫入文件io失敗。 我認爲問題在於該權限。有什麼方法可以解決它嗎?如何爲使用gradle的Junit測試提供寫入權限

如何創建的文件:

File file = new File(String.format("./%s/e2eTest/Delete/Hello.txt", root)); 

    file.createNewFile(); 

    FileWriter writer = new FileWriter(file); 
    writer.write("Test data\n"); 
    writer.close(); 

如何訪問文件:

Unirest.delete(String.format("http://localhost:%d/e2etest/delete/hello.txt",port)).asString().getStatus(); 

服務器端:

File f = new File(root+request.getUri()) 
+0

@janos輸出僅僅是JUnit的斷言不匹配由於非存在的文件(該文件是在測試設置創建) – SwordW

+0

顯示文件的創建並請訪問。 – ChiefTwoPencils

+0

@ChiefTwoPencils補充 – SwordW

回答

1

爲確保您有寫入權限,我建議您在java.io.tmpdir系統屬性指定的文件夾下創建文件。

一個簡單的方法是在junit測試中使用TemporaryFolder規則,該規則將在測試完成後刪除所有內容。

如:

public class MyTest { 
    @Rule 
    public TemporaryFolder folder = new TemporaryFolder(); 

    @Test 
    public void myFileTest() throws IOException { 
     File testFile = folder.newFile("myfile.txt"); 
     doStuff(testFile); 
    } 
} 

參見File.createTempFile(...)