Si vous avez besoin d'un répertoire temporaire pour les tests et que vous utilisez jUnit, @Rule
en même temps que TemporaryFolder
résout votre problème :
@Rule
public TemporaryFolder folder = new TemporaryFolder();
De la documentation :
La règle TemporaryFolder permet de créer des fichiers et des dossiers dont la suppression est garantie à la fin de la méthode de test (qu'elle réussisse ou échoue).
Mise à jour :
Si vous utilisez JUnit Jupiter (version 5.1.1 ou supérieure), vous avez la possibilité d'utiliser JUnit Pioneer qui est le JUnit 5 Extension Pack.
Copié de la la documentation du projet :
Par exemple, le test suivant enregistre l'extension pour une seule méthode de test, crée et écrit un fichier dans le répertoire temporaire et vérifie son contenu.
@Test
@ExtendWith(TempDirectory.class)
void test(@TempDir Path tempDir) {
Path file = tempDir.resolve("test.txt");
writeFile(file);
assertExpectedFileContent(file);
}
Plus d'informations dans le JavaDoc et le JavaDoc de 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>
Mise à jour 2 :
Le site @TempDir a été ajoutée à la version 5.4.0 de JUnit Jupiter en tant que fonctionnalité expérimentale. Exemple copié de la Guide de l'utilisateur de 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));
}