作为单元测试的一部分,在我的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"));