gpt4 book ai didi

java - 使用 Junit 进行单元测试时保存文件的路径

转载 作者:行者123 更新时间:2023-12-01 07:03:47 27 4
gpt4 key购买 nike

在 Java 应用程序中,我有一个类方法,它仅使用文件名来保存文件。

public void doSomething(){
final File file = new File("XXX"+(new Random().next())+".txt");
file.createNewFile();
}

然后,在使用 JUnit 4 的单元测试中,我运行执行该方法的类,并在根文件夹中看到一个名为 XXX.txt 创建的文件项目的情况。

@Test
public void doSomethingTest() throws Exception{
//call doSomething();
Path path = //to project folder
Files.delete(path);
}

如何动态获取此路径,以便可以使用 @After 方法删除它?

最佳答案

最简单的方法是通过允许代码注入(inject)创建文件的基本目录来使代码可测试。

而不是

public Foo() {
}

public void doSomething() {
final File file = new File("XXX" + (new Random().next()) + ".txt");
file.createNewFile();
}

使用

private File baseDirectory;

public Foo() {
this(new File("."));
}

public Foo(File baseDirectory) {
this.baseDirectory = baseDirectory;
}

public void doSomething() {
final File file = new File(baseDirectory, "XXX" + (new Random().next()) + ".txt");
file.createNewFile();
}

现在您的测试可以创建一个临时空目录,将其传递给构造函数,调用该方法,检查文件并在测试后删除它们。

无论如何,这可能是您想要的功能,因为总是在当前目录中写入对我来说似乎不是一个好主意。

关于java - 使用 Junit 进行单元测试时保存文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32410317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com