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?
@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. –
@Teinacher ¿ha encontrado una solución para esto? Tengo lo mismo y no sé cómo resolverlo – javagirl