我在我的测试中使用Jimfs:
public class FooTest {
private FileSystem fs = Jimfs.newFileSystem(Configuration.unix());
private List<Path> paths = new ArrayList<>();
private Path getPath(String first, String... more) {
Path path = fs.getPath(first, more);
paths.add(path);
return path;
}
@After public void cleanPaths() {
for (Path path: paths) {
Files.walkFileTree(path, FileVisitors.DELETE);
}
}
@Test public void bar() {
Path baz = getPath("baz");
// test using baz
}
}
现在,我们知道Jimfs在记忆中。我是否真的需要清理我创建的路径,还是可以删除@After
方法(及其相关机制)?
我清楚地认为这是创建jimfs的基本需求,但是......我正在调整现有代码,我突然对此感到困惑。
答案 0 :(得分:2)
由于为每个测试方法创建了一个FooTest
的新实例(不确定这是否总是对JUnit是真的,但我认为在典型情况下它至少是真的),除非您创建该字段FileSystem
,否则您将为每个测试获得一个新的static
。因此,无需删除测试后创建的文件。但是,您可能希望在每次测试后close()
FileSystem
。这会立即从打开的文件系统的地图中删除它,允许它被垃圾收集。 (这不是绝对必要的,因为文件系统存储在弱引用中,但我认为它最好。)