Si necesita un directorio temporal para la prueba y está utilizando jUnit, @Rule
junto con TemporaryFolder
resuelve su problema:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
De la documentación :
La regla de TemporaryFolder permite la creación de archivos y carpetas que se garantiza que se eliminarán cuando finalice el método de prueba (ya sea que pase o no)
Actualizar:
Si está utilizando JUnit Jupiter (versión 5.1.1 o superior), tiene la opción de utilizar JUnit Pioneer, que es el paquete de extensión JUnit 5.
Copiado de la documentación del proyecto :
Por ejemplo, la siguiente prueba registra la extensión para un único método de prueba, crea y escribe un archivo en el directorio temporal y verifica su contenido.
@Test
@ExtendWith(TempDirectory.class)
void test(@TempDir Path tempDir) {
Path file = tempDir.resolve("test.txt");
writeFile(file);
assertExpectedFileContent(file);
}
Más información en JavaDoc y 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>
Actualización 2:
La anotación @TempDir se agregó a la versión JUnit Jupiter 5.4.0 como una característica experimental. Ejemplo copiado de la Guía del usuario 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));
}