unitarias unitaria tutorial test pruebas prueba fail ejemplos configuracion con java selenium-rc junit4

java - unitaria - Pasar argumentos de línea de comando al caso de prueba JUnit que se ejecuta mediante programación



pruebas unitarias (1)

Estoy intentando ejecutar una prueba JUnit de una clase Java con:

JUnitCore core = new JUnitCore(); core.addListener(new RunListener()); core.run(classToRun);

El problema es que mi prueba JUnit requiere una conexión de base de datos que actualmente está codificada en la prueba JUnit.

Lo que estoy buscando es una forma de ejecutar la prueba JUnit programáticamente (arriba), pero le paso una conexión de base de datos que creo en mi clase Java que ejecuta la prueba, y no codificada dentro de la clase JUnit.

Básicamente algo así como

JUnitCore core = new JUnitCore(); core.addListener(new RunListener()); core.addParameters(java.sql.Connection); core.run(classToRun);

Luego dentro de la claseToRun:

@Test Public void Test1(Connection dbConnection){ Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery("select total from dual"); rs.next(); String myTotal = rs.getString("TOTAL"); //btw my tests are selenium testcases:) selenium.isTextPresent(myTotal); }

Sé acerca de los @Parameters, pero no parece aplicable aquí, ya que es más para ejecutar el mismo caso de prueba varias veces con diferentes valores. Quiero que todos mis casos de prueba compartan una conexión de base de datos que paso a través de un archivo de configuración a mi cliente Java que luego ejecuta esos casos de prueba (también pasados ​​a través del archivo de configuración).

es posible?

PD. Entiendo que esto parece una manera extraña de hacer las cosas.


Puede usar las propiedades del sistema de Java para lograr esto.

Simplemente pase lo que necesita con -Dconnectionstring=foobar en la línea de comando junit, o use la API java para las propiedades del sistema para configurar esto programáticamente, con System.setProperty(String name, String value) y System.getProperty(String name) .

En sus pruebas, puede usar @Before o @BeforeClass para configurar objetos comunes basados ​​en esta propiedad, pendiente de si desea ejecutar la configuración una vez para cada prueba (en cuyo caso puede usar miembros de la clase) o una vez para cada suite (y luego use miembros estáticos).

Incluso puede factorizar este comportamiento utilizando una clase abstracta que abarca todos los casos de prueba.