Se você precisa de um diretório temporário para testar e você estiver usando JUnit, @Rule
juntamente com TemporaryFolder
resolve o seu problema:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
A partir da documentação :
A regra TemporaryFolder permite a criação de arquivos e pastas que são garantidos para serem excluídos quando o método de teste terminar (se passa ou falha)
Atualizar:
Se você estiver usando o JUnit Jupiter (versão 5.1.1 ou superior), terá a opção de usar o JUnit Pioneer, que é o JUnit 5 Extension Pack.
Copiado da documentação do projeto :
Por exemplo, o teste a seguir registra a extensão para um único método de teste, cria e grava um arquivo no diretório temporário e verifica seu conteúdo.
@Test
@ExtendWith(TempDirectory.class)
void test(@TempDir Path tempDir) {
Path file = tempDir.resolve("test.txt");
writeFile(file);
assertExpectedFileContent(file);
}
Mais informações no JavaDoc e no JavaDoc do 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>
Atualização 2:
A anotação @TempDir foi adicionada à versão do JUnit Jupiter 5.4.0 como um recurso experimental. Exemplo copiado do Guia do Usuário 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));
}