miércoles, 24 de marzo de 2010

Configuración de Pruebas JUnit

Durante la realización de pruebas unitarias existen variables comunes en todas las pruebas por ejemplo directorios de salida, directorio de datos etc.

En vez de crear estas variables en cada prueba unitaria utilizo la clase TestConfiguration.

TestConfiguration es Singleton que permite accesar el outputPath (directorio de salida) y el testDataPath (directorio con datos de prueba). Además inicializa el Logger de Log4J.

En el constructor de cada prueba unitaria solo hay que insertar el siguiente código y Log4J queda configurado segun el log4jprops.xml (ver código).


TestConfiguration.getInstance();


El siguiente es el código de TestConfiguration


package org.gissolution.photodb;

import java.io.File;
import java.net.URL;

import org.apache.log4j.xml.DOMConfigurator;

public class TestConfiguration {
private static org.apache.log4j.Logger logger = org.apache.log4j.Logger
.getLogger(TestConfiguration.class);
private static TestConfiguration testConfig = null;
private final String outputPath;
private final String testDataPath;
protected TestConfiguration() {
File out = new File("output");
File data = new File("test_data");
this.outputPath = out.getAbsolutePath();
this.testDataPath = data.getAbsolutePath();
String configfile = "/log4jprops.xml";
URL url = this.getClass().getResource(configfile);
DOMConfigurator.configure(url);
logger.info("Log4j configured with " + url.getFile());

}

public static TestConfiguration getInstance() {
if (testConfig == null) {
testConfig = new TestConfiguration();
}
return testConfig;
}

public String getOutputPath() {
return outputPath;
}

public String getTestDataPath() {
return testDataPath;
}

public static String getExistingTestData(String relativePath) {
String tpath = TestConfiguration.getInstance().getTestDataPath();
File f = new File(tpath + File.separator + relativePath);
if(f.exists()) {
return f.getAbsolutePath();
}else {
throw new IllegalArgumentException(f.getAbsolutePath() + " no existe");
}
}

public static void main(String[] args) {
System.out.println("Output path: " + TestConfiguration.getInstance().getOutputPath());
System.out.println("Test Data path: " + TestConfiguration.getInstance().getTestDataPath());
}

No hay comentarios:

Publicar un comentario