我有一些代码将文件写入我选择的目录。我目前有一个测试,它利用 JUnit Theories 在许多不同的目录中运行此代码。它看起来类似于:
@DataPoints
public static File[] produceListOfDirs() {
return new File[] {
new File("some directory path here")
}
}
@Theory
public void myTest(File f) {
... run my code being tested with f ...
}
问题是我希望在测试完成时删除创建的目录(以及在其中创建的文件)(无论是成功还是失败)。
理想情况下,这只是使用 a@Rule
来指定一个临时目录并使用它:
@Rule
public TemporaryFolder testFolder = new TemporaryFolder();
@DataPoints
public static File[] produceListOfDirs() {
return new File[] {
new File(testFolder.getRoot())
}
}
@Theory
public void myTest(File f) {
... run my code being tested with f ...
}
但是当然这里的问题是@DataPoints 只能注解静态方法,而且 TemporaryFolder 规则一定不能是静态的。
有什么优雅的解决方案吗?