2017-10-10 62 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(...)