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
Great stuff! ¡Funciona! –
En mi caso, los atributos 'time' y' name' están invertidos. El one-liner se convierte en: 'grep -h"
Rolf
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 –