2009-10-12 13 views
18

Tengo pruebas de JUnit que deben ejecutarse en diferentes entornos de ensayo. Cada uno de los entornos tiene credenciales de inicio de sesión diferentes u otros aspectos que son específicos de ese entorno. Mi plan es pasar una variable de entorno a la VM para indicar qué entorno usar. Luego use esa var para leer desde un archivo de propiedades.¿JUnit admite archivos de propiedades para las pruebas?

¿Tiene JUnit alguna capacidad de compilación para leer un archivo .properties?

Respuesta

24

java tiene capacidades incorporadas para leer un archivo .properties y JUnit tiene capacidades integradas para ejecutar el código de configuración antes de ejecutar un conjunto de pruebas.

propiedades de lectura Java:

Properties p = new Properties(); 
p.load(new FileReader(new File("config.properties"))); 

junit startup documentation

poner los 2 juntos y usted debe tener lo que necesita.

+2

Es posible que sea necesario utilizar un ClassLoader: http://stackoverflow.com/a/9983486/640378 – mauryat

1

¿No puede simplemente leer el archivo de propiedades en su método de configuración?

1
// 
// Load properties to control unit test behaviour. 
// Add code in setUp() method or any @Before method (JUnit4). 
// 
// Corrected previous example: - Properties.load() takes an InputStream type. 
// 
import java.io.File; 
import java.io.FileInputStream;   
import java.util.Properties; 

Properties p = new Properties(); 
p.load(new FileInputStream(new File("unittest.properties"))); 

// loading properties in XML format   
Properties pXML = new Properties(); 
pXML.loadFromXML(new FileInputStream(new File("unittest.xml"))); 
18

Por lo general se prefiere el uso de los archivos relativos de ruta de clase para las características de la unidad de prueba, por lo que puede funcionar sin tener que preocuparse por las rutas de archivos. La ruta puede ser diferente en su cuadro de desarrollo, o en el servidor de compilación, o donde sea. Esto también funcionará desde hormiga, maven, eclipse sin cambios.

private Properties props = new Properties(); 

InputStream is = ClassLoader.getSystemResourceAsStream("unittest.properties"); 
try { 
    props.load(is); 
} 
catch (IOException e) { 
// Handle exception here 
} 

poner el archivo "unittest.properties" en la raíz de la ruta de clases.

+2

Esta es una buena información. Puede considerar hacer un comentario a la respuesta ya aceptada; allí sería mucho más probable que lo lea alguien que se encuentre con esto en sus resultados. – chb

Cuestiones relacionadas