【问题标题】:How to give write permission for a Junit test using gradle如何使用 gradle 为 Junit 测试授予写权限
【发布时间】:2018-03-21 09:21:14
【问题描述】:

我有一个在 Java gradle 中配置的测试套件。 Junit 测试涉及 io 文件写入/读取 当我使用窗口机器和gradlew.bat test 时,所有测试都通过了。 但是,如果我尝试在 linux 机器上运行相同的测试套件,所有涉及写入文件 io 的测试都会失败。 我认为问题在于许可。有什么办法可以解决吗?

我是如何创建文件的:

    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())

【问题讨论】:

  • @janos 输出只是由于文件不存在而导致的junit断言不匹配(该文件是在测试设置中创建的)
  • 请显示文件创建和访问权限。
  • @ChiefTwoPencils 添加

标签: java linux gradle junit build.gradle


【解决方案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(...)

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多