Java 如何为单元测试创建多级文件夹结构

Java 如何为单元测试创建多级文件夹结构,java,junit,Java,Junit,我需要这样的文件夹结构: home --level1 --level2a --level2b 我可以用junit的临时目录创建第一个级别,但是如何创建它下面的级别呢 @Rule public TemporaryFolder home= new TemporaryFolder(); @Before public void setUp() { File level1= home.newFolder("le

我需要这样的文件夹结构:

home
    --level1
        --level2a
        --level2b
我可以用junit的临时目录创建第一个级别,但是如何创建它下面的级别呢

 @Rule
    public TemporaryFolder home= new TemporaryFolder();

    @Before
    public void setUp() 
    {
        File level1= home.newFolder("level1");
    }
试试这个:

package com.sandbox;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import java.io.File;

import static org.junit.Assert.assertTrue;

public class SandboxTest {

    @Rule
    public TemporaryFolder folder = new TemporaryFolder();
    private File level1;
    private File level2a;
    private File level2b;

    @Before
    public void setUp() throws Exception {
        level1 = folder.newFolder("level1");
        level2a = folder.newFolder("level1/level2a");
        level2b = folder.newFolder("level1/level2b");
    }

    @Test
    public void whenCreatingNestedFoldersThenAllGetDeleted() {
        assertTrue(level1.exists());
        assertTrue(level2a.exists());
        assertTrue(level2b.exists());

        System.out.println(level1.getAbsolutePath());
    }

}

它将完全按照您的预期工作。测试运行后,将清理所有设备

这个答案对于JUnit4.12不再有效。文件夹名称不能由多个由文件分隔符分隔的路径组件组成。请使用newFolder('MyParentFolder','MyFolder')来创建文件夹的层次结构。正如@MrKiller21所说,运行该示例的正确方法是:
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import java.io.File;

import static org.junit.Assert.assertTrue;

public class SandboxTest {

    @Rule
    public TemporaryFolder folder = new TemporaryFolder();
    private File level1;
    private File level2a;
    private File level2b;

    @Before
    public void setUp() throws Exception {
        level1 = folder.newFolder("level1");
        level2a = folder.newFolder("level1", "level2a");
        level2b = folder.newFolder("level1", "level2b");
    }

    @Test
    public void whenCreatingNestedFoldersThenAllGetDeleted() {
        assertTrue(level1.exists());
        assertTrue(level2a.exists());
        assertTrue(level2b.exists());

        System.out.println(level1.getAbsolutePath());
    }

}