2011-02-23 17 views

Respuesta

22

Descargo de responsabilidad: realmente me disculpo por mi solución bash, aunque funciona y cabe en una línea :-). Si eres impaciente, ve al final.

Primero necesitamos encontrar todos los archivos TEST-*.xml producidos por maven-surefire-plugin. Ejecutar este después mvn test en el directorio raíz de su proyecto para descubrir resultados de las pruebas en todos los submódulos:

$ find . -iname "TEST-*.xml" 

Afortunadamente el formato de estos archivos es bastante sencillo, un simple grep y tenemos lo que necesitamos:

$ grep -h "<testcase" `find . -iname "TEST-*.xml"` 

Ahora algunos sed magia para extraer momento de la invocación, la clase de caso de prueba y el nombre del método:

$ sed 's/<testcase time="\(.*\)" classname="\(.*\)" name="\(.*\)".*/\1\t\2.\3/' 

Hay 'S nada más a la izquierda justo para ordenar el resultado y mostrar pruebas de más larga data:

$ sort -rn | head 

Promised de una sola línea:

$ grep -h "<testcase" `find . -iname "TEST-*.xml"` | sed 's/<testcase time="\(.*\)" classname="\(.*\)" name="\(.*\)".*/\1\t\2.\3/' | sort -rn | head 

Sorprendentemente, los resultados parecen razonables Activiti código 5.1 multi-módulo (-base tomada como ejemplo):

3.029 org.activiti.examples.variables.jpa.JPAVariableTest.testStoreJPAEntityAsVariable 
2.904 org.activiti.engine.test.forms.FormsTest.testTaskFormPropertyDefaultsAndFormRendering 
1.594 org.activiti.engine.test.api.mgmt.ManagementServiceTest.testGetJobExceptionStacktrace 
1.114 org.activiti.examples.variables.jpa.JPAVariableTest.testUpdateJPAEntityValues 
1.006 org.activiti.engine.test.db.EngineRebootProcessDefinitionCacheTest.testStartProcessInstanceByIdAfterReboot 
0  org.activiti.engine.test.pvm.PvmVariablesTest.testVariables 
0  org.activiti.engine.test.pvm.PvmScopeWaitStateTest.testWaitStateScope 
0  org.activiti.engine.test.pvm.PvmScopesAndConcurrencyTest.testConcurrentPathsGoingIntoScope 
0  org.activiti.engine.test.pvm.PvmEventTest.testNestedActivitiesEventsOnTransitionEvents 
0  org.activiti.engine.test.pvm.PvmEventTest.testEmbeddedSubProcessEvents 
+1

Great stuff! ¡Funciona! –

+3

En mi caso, los atributos 'time' y' name' están invertidos. El one-liner se convierte en: 'grep -h" Rolf

+0

Gracias por las respuestas, haciéndome saber dónde buscar esa información. Para mí, sin embargo, un trazador de líneas no incluía la hora, esto funcionó para mí: grep -h " 30 '| ordenar -g -k3 -r | head -n100 para casos de prueba que toman más de 30 segundos –

Cuestiones relacionadas