2011-02-23 13 views

cevap

22

Yasal Uyarı: Çalışır ve tek satırda uymasına rağmen, gerçekten benim bash çözümüm için özür dilerim :-). Sabırsızsanız, dibe geçin.

Öncelikle maven-surefire-plugin tarafından üretilen tüm TEST-*.xml dosyalarını bulmamız gerekiyor.

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

Neyse bu dosyaların formatı oldukça basittir, basit grep ve biz ne gerek var: tüm submodules içinde test sonuçlarını keşfetmeye projenizin kök dizininde mvn test sonra bu çalıştırın

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

Şimdi bazı çağırma zamanı, test durumu sınıf ve yöntem adı ayıklamak için sed sihirli: Orada

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

Birşey daha uzun soluklu testleri sonucu sıralamak ve görüntülemek için sadece sol:

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

Şaşırtıcı sonuçlar makul (activiti 5.1 çoklu modül kodunu bak:

$ sort -rn | head 

tek astar vaat -sözüm örneği):

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

Harika! İşe yarıyor! –

+3

Benim durumumda, 'time' ve' name' öznitelikleri ters çevrildi. Tek liner: 'grep -h" Rolf

+0

Cevaplar için teşekkürler, bu tür bilgileri nerede arayacağımı söyleyin. Benim için olsa da, bir liner saati listelemedi, bu benim için çalıştı: grep -h " 30 '| sort -g -k3 -r | 30 saniyeden uzun süren test vakaları için -100 –