2012-07-27 13 views
6

Estoy intentando ejecutar la prueba JUnit con JMeter 2.7. Sin embargo, al seleccionar las clases de prueba en el menú desplegable de la muestra JUnit, no se muestran. Como descubrí, eso se debe a que las clases de prueba se extienden desde otra clase (AbstractJUnit4SpringContextTests es la clase base, con varias clases abstractas entre ellas que proporcionan métodos de conveniencia) para todas las pruebas. Se puede seleccionar una clase de prueba que no se extiende desde esas clases base.Las clases de prueba JUnit no se muestran en JMeter

El archivo JAR que contiene las clases de prueba es creado por Maven (test-jar), el JAR que contiene todas las dependencias es creado por el plugin maven fatjar. Ambos jar se colocan en el directorio JMeter/lib/junit.

Sé que el manual de JMeter dice que todas las clases de prueba deben extenderse desde la clase de prueba JUnit, pero eso solo parece ser cierto para JUnit3. Con JUnit4, JMeter no necesita ese requisito. Por supuesto, podría reescribir todas las pruebas para que no tengan que extenderse desde la clase base, pero eso generaría un gran problema de mantenimiento. Entonces, ¿cómo ejecuto las pruebas de JUnit con JMeter que se extienden desde una clase base?

UDPATE 2012-08-09

Gracias a la sugerencia del PMD, ahora copian las dependencias de uno en uno a la carpeta de la liberación de JMeter, y ahora la interfaz gráfica muestra todas mis pruebas unitarias. Antes de eso era posible, tuve que resolver un par de problemas yo solo:

  • Copiar el logkit-1.0.1.jar en la carpeta impidió que la GUI de JMeter se iniciara. No tengo idea de por qué, ningún error o mensaje de registro fue dado. La JVM acaba de comenzar y finalizar.
  • Hubo algunos conflictos de versiones causados ​​por las dependencias de maven que introdujeron versiones anteriores de los paquetes de prueba de primavera. Eso dio como resultado algunas clases de prueba que se extendían desde una clase base anterior con el mismo nombre. Excluir esas dependencias en el archivo pom ayudó.

Ahora puedo ejecutar mis casos de prueba JUnit. Sin embargo, varias referencias en mis clases están anotadas con @Resource. El Testrunner de JMeter no parece inyectar esas referencias, porque cada vez que se accede a una referencia, se arroja un NullPointerException, como se puede ver en el registro de JMeter. Entonces, ¿cómo hago para que JMeter inyecte esas dependencias, es eso posible?

+0

@resource generalmente se interpretan antes de la primavera durante el inicio del contexto. En este caso, debería investigar su código más a fondo, tal vez debería ver cómo se inicializan los casos de prueba de primavera o puede intentar anular el método de configuración para inyectar recursos manualmente. Por cierto, si mi respuesta fue correcta, debe marcarla como tal y quizás abrir otra pregunta en lugar de cambiar la inicial, así es como funciona SO. –

+0

@Teinacher ¿ha encontrado una solución para esto? Tengo lo mismo y no sé cómo resolverlo – javagirl

Respuesta

4

Debe colocar sus clases junit en la carpeta lib/junit como lo hizo y las dependencias en la carpeta lib.

No debe usar fatjar, ya que a veces estas herramientas eliminan archivos de meta-inf o solo guardan uno de todos los archivos, uno de cada uno de sus archivos.

Agregue todos sus jarrones uno por uno en la carpeta lib.

Revise los registros de jmeter para ver si tiene alguna excepción.

Si aún falla, formule una pregunta en la lista de usuarios de jmeter y, si no obtiene ninguna respuesta, cree un caso de prueba simple y abra un error.

1

¿Marcó la opción que JUnit sampler tiene para buscar las pruebas v4?

JMeter option to search for JUnit 4 annotations

He tratado y esto funciona para un proyecto simple que he creado con JUnit 4, se filtra sólo las pruebas con las anotaciones @test incluso esas clases no se extiende la clase TestCase.

-1

Como escribió Teinacher, prueba unitaria se mostrará en JMeter después copiar todas las dependencias del proyecto (todos los archivos .jar) en el directorio de JMeter/lib (JMeter se necesita reiniciar).

+0

Cuando se acepta una respuesta correcta y no hay necesidad de agregar una duplicada que solo confunde a los lectores nuevos. –

Cuestiones relacionadas