我发现了两种在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?
}
如上所述,我有一个要求,我想在这些临时目录中添加一些临时文件。针对此结构运行测试,最后删除退出时的所有内容。
我该怎么做?
答案 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();