tutorial test software framework español ejercicios ejemplos ejemplo configuracion eclipse configuration junit

eclipse - test - junit software



Agregue propiedades automáticamente al ejecutar JUnit en Eclipse (5)

Para ejecutar mis pruebas unitarias en mi Eclipse, necesito establecer algunas propiedades para la VM.

Por lo tanto, cuando ejecuto por primera vez mi prueba JUnit, voy en "Open Run Dialog", luego en mi configuración JUnit para esta prueba, voy en la pestaña "Argumentos" y pongo todo lo que necesito en el área de texto "Argumentos de VM".

¿Hay alguna forma de agregar automáticamente un conjunto de propiedades cuando ejecuto mi JUnit, así que solo podré hacer clic derecho en la clase de prueba y hacer clic en "Ejecutar como> Prueba de Junit" para ejecutar una prueba?

Información técnica: Eclipse 3.3.2, JUnit 4, Java 5

Editar , con respecto a la respuesta de Aaron Digulla:

Estas propiedades se usan en los archivos de configuración de Spring *. Por lo tanto, no puedo usar la idea dada por Aaron, ya que Spring se inicializará antes de que se ejecute la prueba.

Además de eso, solo necesito saber si puedo lograrlo de una manera fácil en Eclipse. Por lo tanto, la solución no debe tener ningún impacto en la compilación de la aplicación fuera de Eclipse, ya que mi aplicación finalmente será compilada (y probada) por Maven2.

* pocas pruebas de "unidad" realmente necesitan que se ejecute mi configuración de resorte. Ok, sé que no son pruebas unitarias reales; o)

Edit 2 : De hecho, estaba empezando la configuración de Spring por una unidad de prueba. Por lo tanto, antes de comenzar Spring, verifico las propiedades del sistema, y ​​si mis propiedades no están establecidas, entonces les doy el valor requerido ...

Sin embargo, estoy un poco decepcionado de que Eclipse no pueda hacer eso automáticamente ...


Cuando quiero establecer algunas entradas de propiedades para mi prueba junit, implemento lo siguiente

protected void setUp() throws Exception { super.setUp(); System.setProperty("Property1", "value1"); System.setProperty("Property2", "value2"); }

Las propiedades se establecen antes de que se llame al método de prueba

EDITAR: También puede leer las propiedades de un archivo y en thes a las propiedades del sistema


Nunca entendí por qué las configuraciones de lanzamiento tienen una forma de definir variables de entorno, pero la única forma de agregar una propiedad del sistema parece ser agregar argumentos vm.

La forma en que he trabajado al respecto es hacer pruebas (o una clase base de pruebas abstractas) para detectar la presencia de propiedades requeridas, si no están allí, entonces las cargo desde un archivo .properties en el classpath.

Esto funciona, ya que aún puedo anularlos o especificarlos desde ANT o Maven, pero también puedo hacer ''clic derecho'' -> Ejecutar como -> Junit Probar los archivos de prueba individuales.

editar: aquí hay un ejemplo de cómo Spring puede cargar opcionalmente un archivo de propiedades de la misma manera que se describe arriba:

<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="database.properties"/> <property name="ignoreResourceNotFound" value="true" /> <property name="systemPropertiesMode"> <util:constant static-field="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_OVERRIDE" /> </property> </bean>


Podrías probar esto - ir a

Window->Preferences->Java->Installed JREs

y seleccione el JVM en uso, luego de poner un prameter "Default VM" como

-DrunningInEclipse

Que puede verificar desde su TestCase:

System.getProperty("runningInEclipse") != null


Mi solución es crear una clase base de prueba abstracta para todas las pruebas en un proyecto que extienda TestCase. Tiene que ser abstracto, por lo que el buscador automático de la unidad no lo tendrá en cuenta.

En el bloque de código estático de esta clase, establezco todas las propiedades que necesito. Esto garantiza que el código se ejecute una sola vez y que se ejecute antes de cualquier prueba en mi proyecto.

[EDIT] Dices que Spring se inicializa antes de que se ejecuten las pruebas. Este es un error en su proyecto: deben ser las pruebas las que inicien Spring. De lo contrario, siempre se encontrará con el problema de que tiene que probar algo fuera de su control.

Por lo tanto, sugiero mover el código de inicio de Spring a un lugar donde pueda llamarlo en el momento en que el entorno esté listo.

Alternativamente, verifique que el entorno esté configurado correctamente en setUp () y genere un error si falta una propiedad. De esta manera, al menos sabrá por qué las pruebas fallarían más tarde. Pero aún prefiero tener el control total cuando el subsistema cobra vida. Cualquier otra cosa solo pide un desastre.


De acuerdo con el método utilizado de esta manera en una de mis pruebas junit y funcionó

@BeforeClass public static void setupProperties() { System.setProperty("catalina.base", "C://sam-tomcat-7.0.42"); }