Jeśli potrzebujesz tymczasowego katalogu do testowania i używasz jUnit, @Rule
razem z TemporaryFolder
rozwiązaniem problemu:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
Z dokumentacji :
Reguła TemporaryFolder umożliwia tworzenie plików i folderów, które z pewnością zostaną usunięte po zakończeniu metody testowej (niezależnie od tego, czy przejdzie, czy nie)
Aktualizacja:
Jeśli używasz JUnit Jupiter (wersja 5.1.1 lub nowsza), możesz skorzystać z JUnit Pioneer, który jest pakietem rozszerzeń JUnit 5.
Skopiowano z dokumentacji projektu :
Na przykład poniższy test rejestruje rozszerzenie dla pojedynczej metody testowej, tworzy i zapisuje plik w katalogu tymczasowym oraz sprawdza jego zawartość.
@Test
@ExtendWith(TempDirectory.class)
void test(@TempDir Path tempDir) {
Path file = tempDir.resolve("test.txt");
writeFile(file);
assertExpectedFileContent(file);
}
Więcej informacji w JavaDoc i JavaDoc w TempDirectory
Stopień:
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>
Aktualizacja 2:
@TempDir Adnotacja dodano do JUnit Jupiter 5.4.0 uwalniania jako funkcję doświadczalnej. Przykład skopiowany z Podręcznika użytkownika 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));
}