我是否必须在每次测试后清理我的 Jimfs 文件系统?

Do I have to clean my Jimfs FileSystem after each test?

我在这样的测试中使用 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 的基本需求,但是......我正在调整现有代码,我突然对此感到困惑。

由于为每个测试方法创建了一个新的 FooTest 实例(不确定这是否 always 对于 JUnit 是正确的,但我认为它至少是正确的典型情况下),你也会为每个测试获得一个新的 FileSystem,除非你创建该字段 static。因此,没有必要删除您在测试后创建的文件。不过,您可能想要做的是在每次测试后 close() FileSystem。这会立即将其从打开的文件系统映射中删除,从而使其能够被垃圾收集。 (这不是绝对必要的,因为文件系统存储在那里的弱引用中,但我认为无论如何它都是可取的。)