Wenn Sie zum Testen ein temporäres Verzeichnis benötigen und jUnit verwenden, löst @Rule
zusammen mit: TemporaryFolder
Ihr Problem:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
Aus der Dokumentation :
Mit der TemporaryFolder-Regel können Dateien und Ordner erstellt werden, die nach Abschluss der Testmethode (unabhängig davon, ob sie erfolgreich ist oder nicht) gelöscht werden.
Aktualisieren:
Wenn Sie JUnit Jupiter (Version 5.1.1 oder höher) verwenden, können Sie JUnit Pioneer verwenden, das JUnit 5 Extension Pack.
Aus der Projektdokumentation kopiert :
Der folgende Test registriert beispielsweise die Erweiterung für eine einzelne Testmethode, erstellt und schreibt eine Datei in das temporäre Verzeichnis und überprüft deren Inhalt.
@Test
@ExtendWith(TempDirectory.class)
void test(@TempDir Path tempDir) {
Path file = tempDir.resolve("test.txt");
writeFile(file);
assertExpectedFileContent(file);
}
Weitere Informationen im JavaDoc und im JavaDoc von 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>
Update 2:
Die Annotation @TempDir wurde der JUnit Jupiter 5.4.0-Version als experimentelle Funktion hinzugefügt. Beispiel aus dem JUnit 5-Benutzerhandbuch kopiert :
@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));
}