How to create a JUnit TemporaryFolder with subfolders
Asked Answered
L

2

17

I would like to create a JUnit TemporyFolder that represents the baseFolder of such a tree:

baseFolder/subFolderA/subSubFolder
          /subFolderB/file1.txt

As far as I understand I can setUp a TemporaryFolder and than can create with "newFolder()" pseudo Folders that are located in that very folder. But How can I create layers underneath? Especially in a way that is cleaned up after the test.

Leverick answered 4/9, 2016 at 13:0 Comment(0)
H
18

temporaryFolder.newFolder(String... folderNames) takes the whole hierarchy as parameters:

@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());
}

It passes the tests and prints:

/var/folders/.../T/junit8666449860303204067/grandparent/parent/child
Hone answered 4/9, 2016 at 13:11 Comment(3)
What about the file inside the subfolder "file1.txt"? How to create it?Emulsify
Do TemporaryFolder instances get automatically deleted? This says they "should be deleted": junit.org/junit4/javadoc/latest/org/junit/rules/…. This says they're "guaranteed to be deleted": junit.org/junit4/javadoc/4.9/org/junit/rules/….Waterer
@JWoodchuck I think the idea is that there are exceptional cases where the folder will not be deleted successfully: #16494959Hone
G
0

TemporaryFolder has a method newFolder(String...folderNames) that allows you to create subdirectories.

tempFolder.newFolder("subFolderA", "subSubFolder")

http://junit.org/junit4/javadoc/4.12/org/junit/rules/TemporaryFolder.html#newFolder(java.lang.String...)

Ground answered 4/9, 2016 at 13:11 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.