Якщо вам потрібен тимчасовий каталог для тестування, і ви використовуєте jUnit @Rule
разом із TemporaryFolder
вирішенням вашої проблеми:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
З документації :
Правило TemporaryFolder дозволяє створювати файли та папки, які гарантовано видаляються після закінчення методу тестування (проходить він чи не працює)
Оновлення:
Якщо ви використовуєте JUnit Jupiter (версія 5.1.1 або новіша версія), у вас є можливість використовувати JUnit Pioneer, який є пакетом розширень JUnit 5.
Скопійовано з проектної документації :
Наприклад, наступний тест реєструє розширення для одного методу тестування, створює і записує файл у тимчасовий каталог і перевіряє його вміст.
@Test
@ExtendWith(TempDirectory.class)
void test(@TempDir Path tempDir) {
Path file = tempDir.resolve("test.txt");
writeFile(file);
assertExpectedFileContent(file);
}
Більше інформації в JavaDoc та JavaDoc з TempDirectory
Gradle:
dependencies {
testImplementation 'org.junit-pioneer:junit-pioneer:0.1.2'
}
Maven:
<dependency>
<groupId>org.junit-pioneer</groupId>
<artifactId>junit-pioneer</artifactId>
<version>0.1.2</version>
<scope>test</scope>
</dependency>
Оновлення 2:
@TempDir анотацій була додана в JUnit Jupiter 5.4.0 випуску в якості експериментальної функції. Приклад скопійований з Посібника користувача JUnit 5 :
@Test
void writeItemsToFile(@TempDir Path tempDir) throws IOException {
Path file = tempDir.resolve("test.txt");
new ListWriter(file).write("a", "b", "c");
assertEquals(singletonList("a,b,c"), Files.readAllLines(file));
}