作为单元测试的一部分,在我的maven java项目中,我必须创建一些文件。
尽管我在每次测试后都会清理,但为了安全起见,我想将它们放在应该放在我项目中的文件夹中。如果“目标”文件夹是正确的选择,您能建议我吗?

我可以将它们放置在项目的外部,但是要使其易于在所有计算机上执行,将很繁琐。另外,在不受团队直接控制的计算机中,我可能会出现文件或目录权限问题。

最佳答案

您可以选择target文件夹,因为在调用mvn clean时,默认情况下(至少在不更改配置的情况下)maven clean plugin将删除它。您还应该能够写入target目录,因此应该可以正常工作。

但是,如果您在项目中使用JUnit,我建议使用TemporaryFolder类的内置功能。
这将在临时目录中创建一个文件夹,并在每个测试用例之后将其删除。请参阅下面的用法示例。

import java.io.File;
import java.io.IOException;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

public class TempFolderTest {

    @Rule
    public TemporaryFolder tempFolder = new TemporaryFolder();

    @Test
    public void test() throws IOException {
        File file = tempFolder.newFile();
    }

}


当您实际上要使用target目录时,甚至可以将此作为构造函数的参数。但总的来说,我认为不需要自己指定测试文件的位置。

@Rule
public TemporaryFolder tempFolder = new TemporaryFolder(new File("target"));

10-07 12:23
查看更多