如何在JUnit的临时目录内添加文件

时间:2018-12-20 02:45:09

标签: java file junit

我发现了两种在JUnit中创建临时目录的方法。

方法1:

@Rule
public TemporaryFolder tempDirectory = new TemporaryFolder();

@Test
public void testTempDirectory() throws Exception {
    tempDirectory.newFile("test.txt");
    tempDirectory.newFolder("myDirectory");
    // how do I add files to myDirectory?
}

方法2:

@Test
public void testTempDirectory() throws Exception {
    File myFile = File.createTempFile("abc", "txt");
    File myDirectory = Files.createTempDir();
    // how do I add files to myDirectory?
}

如上所述,我有一个要求,我想在这些临时目录中添加一些临时文件。针对此结构运行测试,最后删除退出时的所有内容。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

您可以像对真实文件夹一样进行操作。

@Rule
public TemporaryFolder rootFolder = new TemporaryFolder();

@Test
public void shouldCreateChildFile() throws Exception {
    File myFolder = rootFolder.newFolder("my-folder");

    File myFile = new File(myFolder, "my-file.txt");
}

答案 1 :(得分:0)

使用新File(subFolderOfTemporaryFolder,“ fileName”)对我不起作用。调用subFolder.list()返回一个空数组。这就是我的工作方式:

@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();

@Test
public void createFileInSubFolderOfTemporaryFolder() throws IOException {
    String subFolderName = "subFolder";
    File subFolder = temporaryFolder.newFolder(subFolderName);
    temporaryFolder.newFile(subFolderName + File.separator + "fileName1");

    String[] actual = subFolder.list();

    assertFalse(actual.length == 0);
}

答案 2 :(得分:-1)

有两种删除临时目录或临时文件的方法。首先,使用file.delete()方法手动删除目录或文件;第二,当程序存在用户file.deleteOnExist()时,删除临时目录或文件。 您可以尝试此操作,我可以打印出控制台的路径,您可以检查是否真的是delte,我可以在Windows7系统上进行测试。

File myDirectory = Files.createTempDir();
File tmpFile = new File(myDirectory.getAbsolutePath() + File.separator + "test.txt");
FileUtils.writeStringToFile(tmpFile, "HelloWorld", "UTF-8");
System.out.println(myDirectory.getAbsolutePath());
// clean
tmpFile.delete();
myDirectory.deleteOnExit();