如何创建具有子文件夹的JUnit TemporaryFolder

16
我想创建一个JUnit TemporyFolder,它代表这样一棵树的baseFolder:
baseFolder/subFolderA/subSubFolder
          /subFolderB/file1.txt

据我所知,我可以设置一个TemporaryFolder,然后可以使用“newFolder()”创建位于该文件夹中的伪文件夹。但是如何在下层创建图层?特别是以测试完成后需要清理的方式。

2个回答

17

temporaryFolder.newFolder(String... folderNames)接受整个层次结构作为参数:

@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();

@Test
public void test() throws Exception {
    File child = temporaryFolder.newFolder("grandparent", "parent", "child"); //...

    assertEquals("child", child.getName());
    assertEquals("parent", child.getParentFile().getName());
    assertEquals("grandparent", child.getParentFile().getParentFile().getName());
    System.out.println(child.getAbsolutePath());
}

它通过测试并打印:
/var/folders/.../T/junit8666449860303204067/grandparent/parent/child

3
"file1.txt" 子文件夹里面的文件怎么创建? - Manjunath M
1
临时文件夹实例会自动删除吗?这里说它们“应该被删除”:https://junit.org/junit4/javadoc/latest/org/junit/rules/TemporaryFolder.html。这里说它们“保证被删除”:https://junit.org/junit4/javadoc/4.9/org/junit/rules/TemporaryFolder.html。 - Woodchuck
@JWoodchuck 我认为这个想法是有一些特殊情况,可能会导致文件夹无法被成功删除:https://dev59.com/02Qn5IYBdhLWcg3w5aay#7MDmnYgBc1ULPQZF4C5F - alexbt

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接