2010-02-28 14 views
6

Uso Google Appengine para Java (GAE/J). En la parte superior, uso Jersey REST-framework.Google AppEngine + Pruebas JUnit Locales + Estructura de Jersey + Embedded Jetty

Ahora quiero ejecutar pruebas JUnit locales. La prueba

Desafortunadamente, el combo Jersey/Jetty genera nuevos hilos. GAE espera que solo se ejecute un hilo. Al final, termino teniendo cualquiera datstore dentro de los recursos de Jersey o múltiples, teniendo diferente almacén de datos.

Como solución alternativa, inicializo el env de GAE local solo una vez, lo pongo en una variable estática y dentro del recurso de GAE agrego muchas comprobaciones (¿Este subproceso no tiene dev env? Reutiliza el estático). Y estas comprobaciones solo deben ejecutarse dentro de las pruebas de JUnit ... (que pregunté antes: "¿Cómo puedo averiguar si el código se ejecuta dentro de una prueba JUnit o no?" - No puedo publicar el enlace directamente aquí: - |)

Respuesta

4

uso pueden ser una propiedad del sistema ... Cuando se trata de una carrera Junit establecer una propiedad del sistema Java a través de un arg JVM que puede entonces prueba para algo como esto:

  • pase en una JVM arg a través de parms de configuración de ejecución cuando se prueba (en IDE, etc.) como este: -DRunningTestsOnly=true
  • en el código: if ("true".equals(System.getProperty("RunningTestsOnly")))

que he hecho similar a esto en las pruebas JUnit antes, usando suponga hacer caso omiso de las pruebas que creo que tiene demasiado tiempo para funcionar en mi PC dev poca potencia ...

  • pase en arg JVM: -DexecuteQuickRunningTestsOnly=true
  • ignorar un método de prueba que ejecuta lentamente si la propiedad establece que puse en la parte superior del método: assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));
+0

Considere también el uso de variables de entorno, accedidas en código a través de, por ejemplo, 'String runLevel = System.getenv (" RUN_LEVEL ");'. Ese mecanismo * independiente del idioma es popular para permitir que su programa tenga diferentes parámetros de configuración en diferentes entornos (desarrollo, prueba, integración, CI, producción, etc.) – gb96

1

Sólo una idea: Se puede crear una excepción y luego iterar sobre la excepción trace para ver si thers es una clase del paquete junit allí.

Cuestiones relacionadas