java - JUnit Rule TemporaryFolder
junit-rule (2)
Esto funciona también. EDITAR si en el método @Before parece que myfolder.create () necesita llamarse. Y esta es probablemente una mala práctica ya que el javadoc dice que no llame a TemporaryFolder.create (). 2nd Edit Parece que debe llamar al método para crear los directorios temporales si no los quiere en los métodos @Test. También asegúrese de cerrar todos los archivos que abra en el directorio temporal o no se eliminarán automáticamente.
<imports excluded>
public class MyTest {
@Rule
public TemporaryFolder myfolder = new TemporaryFolder();
private File otherFolder;
private File normalFolder;
private File file;
public void createDirs() throws Exception {
File tempFolder = myfolder.newFolder("folder");
File normalFolder = new File(tempFolder, "normal");
normalFolder.mkdir();
File file = new File(normalFolder, "file.txt");
PrintWriter out = new PrintWriter(file);
out.println("hello world");
out.flush();
out.close();
}
@Test
public void testSomething() {
createDirs();
....
}
}
Estoy creando una @Rule
TemporaryFolder
usando la anotación @Rule
en JUnit 4.7. Intenté crear una nueva carpeta que sea hija de la carpeta temp usando tempFolder.newFolder("someFolder")
en el @Before
(setup) de mi prueba. Parece que la carpeta temporal se inicializa después de que se ejecuta el método de instalación, lo que significa que no puedo usar la carpeta temporal en el método de instalación. ¿Es este comportamiento correcto (y predecible)?
Este es un problema en Junit 4.7. Si actualiza un Junit más nuevo (por ejemplo, 4.8.1), todos los @Rule se ejecutarán cuando ingrese el método @Before: s. Un informe de error relacionado es este: https://github.com/junit-team/junit4/issues/79