JUnit 4.7: TemporaryFolder

Como comenté en una entrada anterior, he estado haciendo pruebas con la versión 4.7 de JUnit (aunque ya está disponible la 4.8, pero esta entrada lleva su tiempo en el tintero).

Otra funcionalidad que he "descubierto" y me parece muy interesante, la ofrece la clase TemporaryFolder. Con ella, podremos crear archivos y carpetas, con la ventaja de que estos se eliminarán automáticamente al finalizar el test.

Para muestra un botón:

package es.gmr.junit;

import java.io.File;

import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

public class TemporaryFolderTest {

@Rule
public TemporaryFolder temporaryFolder =
new TemporaryFolder();

@Test
public void deberiaPasar() throws Exception {
File newFile =
temporaryFolder.newFile("gangamuza.txt");

Assert.assertTrue("El fichero no existe",
newFile.exists());
}
}


En este caso, el test pasará sin problemas, ya que el fichero gangamuza.txt se habrá creado en un directorio temporal. (En mi caso, en C:\Documents and Settings\gregoriomr\Configuración local\Temp). Y al finalizar el test, tanto el directorio que se crea temporalmente para almacenar los ficheros, como el fichero gangamuza.txt se han eliminado.

Aunque durante la ejecución del test se produjera una excepción, los directorios y ficheros se eliminarán igualmente, con lo que nos evita tener que controlar muchas situaciones. También tiene un método similar, para crear directoiros: newFolder.

Por poner un pero, si cancelamos la ejecución del test antes de que finalice, evidentemente no se eliminarán los ficheros y directorios. El "problema" es que cada vez que se ejecuta crea un directorio temporal cuyo nombre sigue el patrón "junit" + 19 dígitos, que va cambiando en cada ejecución. Por lo que un directorio que se quede sin borrar, ya no será recuperado y no ha implementado forma de eliminarlo en la siguiente iteración.

Comentarios