Нужно ли чистить мою файловую систему 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
после каждого теста. Это немедленно удаляет его из карты открытых файловых систем, позволяя собирать мусор. (Это не является строго необходимым, поскольку файловая система хранится в слабой ссылке, но я думаю, что в любом случае это предпочтительнее.)