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());
}