【问题标题】:Where should I place test data files created during unit test?我应该将单元测试期间创建的测试数据文件放在哪里?
【发布时间】:2017-09-06 19:59:38
【问题描述】:

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

我可以将它们放在一个项目之外,但是为了让它在所有机器上都可以轻松执行,这将是乏味的。此外,我可能会在不受我的团队直接控制的机器上出现文件或目录权限问题。

【问题讨论】:

  • 目标folder 是唯一的选择...而不是您可以通过默认值删除所有内容,这意味着只需通过mvn clean 不需要额外配置等。

标签: java maven


【解决方案1】:

您可以选择target 文件夹,因为maven clean plugin 会在调用mvn clean 时默认删除它(至少在您没有更改配置时)。您还应该能够写入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"));

【讨论】:

  • 谢谢@SilverNak,我不知道 TemporaryFolder。我还没有使用过它,但我会尝试在我未来的开发中使用它。
猜你喜欢
  • 2012-07-31
  • 2010-10-23
  • 2014-02-04
  • 2011-03-04
  • 2023-04-09
  • 2012-03-21
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
相关资源
最近更新 更多