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

3

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

home
    --level1
        --level2a
        --level2b

我可以用JUnit的临时目录创建第一级,但如何创建下面的级别?
 @Rule
    public TemporaryFolder home= new TemporaryFolder();

    @Before
    public void setUp() 
    {
        File level1= home.newFolder("level1");
    }
2个回答

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

}

2

试试这个:

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

}

它将按照您所期望的方式正常工作。测试运行后,所有内容都将被清除。


4
这个回答已经过时,对于junit 4.12不再适用。文件夹名称不能包含由文件分隔符分隔的多个路径组件。请使用newFolder('MyParentFolder','MyFolder')来创建文件夹层次结构。 - BartoszMiller
正如@MrKiller21所说,运行示例的正确方法是: - jabrena

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