Si vous avez besoin d' un répertoire temporaire pour les tests et que vous utilisez JUnit, @Rule
ainsi TemporaryFolder
résout votre problème:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
De la documentation :
La règle TemporaryFolder permet la création de fichiers et de 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 pack d'extension JUnit 5.
Copié de 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:
L' annotation @TempDir a été ajoutée à la version JUnit Jupiter 5.4.0 en tant que fonctionnalité expérimentale. Exemple copié à partir du 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));
}