在Java应用程序中,我有一个类的方法,仅使用文件名来保存文件。
public void doSomething(){
final File file = new File("XXX"+(new Random().next())+".txt");
file.createNewFile();
}
然后,在使用JUnit 4进行单元测试中,我运行执行该方法的类,并XXX.txt
在项目的根文件夹中看到一个以name创建的文件。
@Test
public void doSomethingTest() throws Exception{
//call doSomething();
Path path = //to project folder
Files.delete(path);
}
如何动态获取此路径,以便可以使用一种@After
方法将其删除?
最简单的方法是允许代码在创建文件的基础目录中注入代码,从而使代码可测试。
代替
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();
}
现在,您的测试可以创建一个临时的空目录,将其传递给构造函数,调用该方法,检查文件并在测试后将其删除。
无论如何,这可能是您想要的功能,因为对我而言,始终在当前目录中写入似乎不是一个好主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句