每次测试后我都要清理我的Jimfs文件系统吗?

时间:2015-11-06 09:49:11

标签: java jimfs

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

1 个答案:

答案 0 :(得分:2)

由于为每个测试方法创建了一个FooTest的新实例(不确定这是否总是对JUnit是真的,但我认为在典型情况下它至少是真的),除非您创建该字段FileSystem,否则您将为每个测试获得一个新的static。因此,无需删除测试后创建的文件。但是,您可能希望在每次测试后close() FileSystem。这会立即从打开的文件系统的地图中删除它,允许它被垃圾收集。 (这不是绝对必要的,因为文件系统存储在弱引用中,但我认为它最好。)