Нужно ли чистить мою файловую систему 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
  }
}

Теперь мы знаем, что Джимфс в памяти. Мне действительно нужно очистить пути, которые я создал, или я могу просто удалить @After метод (и связанный с ним механизм)?

Я ясно думаю, что это основная потребность, почему был создан jimfs, но хорошо... Я адаптирую существующий код, и я внезапно запутался в этом.

1 ответ

Решение

Так как новый экземпляр FooTest создается для каждого метода тестирования (не уверен, что это всегда так с JUnit, но я думаю, что это по крайней мере верно в типичном случае), вы получите новый FileSystem для каждого теста, если только вы не сделаете это поле static, Таким образом, удаление файлов, созданных вами после теста, не обязательно. Что вы можете сделать, это close() FileSystem после каждого теста. Это немедленно удаляет его из карты открытых файловых систем, позволяя собирать мусор. (Это не является строго необходимым, поскольку файловая система хранится в слабой ссылке, но я думаю, что в любом случае это предпочтительнее.)

Другие вопросы по тегам