Se hai bisogno di una directory temporanea per il test e stai usando jUnit, @Rule
insieme a TemporaryFolder
risolve il tuo problema:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
Dalla documentazione :
La regola TemporaryFolder consente la creazione di file e cartelle che sono garantiti per l'eliminazione al termine del metodo di test (se passa o meno)
Aggiornare:
Se si utilizza JUnit Jupiter (versione 5.1.1 o successiva), è possibile utilizzare JUnit Pioneer che è il pacchetto di estensione JUnit 5.
Copiato dalla documentazione del progetto :
Ad esempio, il test seguente registra l'estensione per un singolo metodo di test, crea e scrive un file nella directory temporanea e ne controlla il contenuto.
@Test
@ExtendWith(TempDirectory.class)
void test(@TempDir Path tempDir) {
Path file = tempDir.resolve("test.txt");
writeFile(file);
assertExpectedFileContent(file);
}
Maggiori informazioni in JavaDoc e JavaDoc di TempDirectory
Gradle:
dependencies {
testImplementation 'org.junit-pioneer:junit-pioneer:0.1.2'
}
Esperto di:
<dependency>
<groupId>org.junit-pioneer</groupId>
<artifactId>junit-pioneer</artifactId>
<version>0.1.2</version>
<scope>test</scope>
</dependency>
Aggiornamento 2:
L' annotazione @TempDir è stata aggiunta alla versione JUnit Jupiter 5.4.0 come funzionalità sperimentale. Esempio copiato dalla Guida dell'utente di 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));
}