2011-09-26 27 views
8

Recientemente integé Cobertura en mis scripts de compilación Ant y me pregunto si lo hice correctamente porque ha disminuido significativamente el tiempo que lleva realizar las pruebas unitarias.Pruebas unitarias lentas con Cobertura

Aquí es una salida de la consola muestra:

... 
[junit] Running gov.nyc.doitt.gis.webmap.strategy.markup.ViewportDeterminingMarkupStrategyTest 
[junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0.38 sec 
[junit] Flushing results... 
[junit] Flushing results done 
[junit] Cobertura: Loaded information on 282 classes. 
[junit] Cobertura: Saved information on 282 classes. 
[junit] Running gov.nyc.doitt.gis.webmap.strategy.markup.VisibleFeatureTypesMarkupInfoTest 
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.434 sec 
[junit] Flushing results... 
[junit] Flushing results done 
[junit] Cobertura: Loaded information on 282 classes. 
[junit] Cobertura: Saved information on 282 classes. 
[junit] Running gov.nyc.doitt.gis.webmap.strategy.markup.basemap.BasemapByViewportStrategyTest 
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 2.016 sec 
[junit] Flushing results... 
[junit] Flushing results done 
[junit] Cobertura: Loaded information on 282 classes. 
[junit] Cobertura: Saved information on 282 classes. 
[junit] Running gov.nyc.doitt.gis.webmap.strategy.markup.basemap.BasemapByZoomLevelAndCenterPointStrategyTest 
[junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 1.853 sec 
[junit] Flushing results... 
[junit] Flushing results done 
[junit] Cobertura: Loaded information on 282 classes. 
[junit] Cobertura: Saved information on 282 classes. 
... 

Parece sospechoso que después de cada prueba Cobertura dice:

[junit] Cobertura: Loaded information on 282 classes. 
[junit] Cobertura: Saved information on 282 classes. 
... 

Aquí es mi unidad de tarea de prueba de mi script de construcción Ant:

<target name="unit-test" depends="compile-unit-test"> 
    <delete dir="${reports.xml.dir}" /> 
    <delete dir="${reports.html.dir}" /> 
    <mkdir dir="${reports.xml.dir}" /> 
    <mkdir dir="${reports.html.dir}" /> 

    <junit fork="yes" dir="${basedir}" failureProperty="test.failed" printsummary="on"> 
     <!-- 
       Note the classpath order: instrumented classes are before the 
       original (uninstrumented) classes. This is important. 
      --> 
     <classpath location="${instrumented.dir}" /> 
     <classpath refid="test-classpath" /> 

     <formatter type="xml" /> 
     <test name="${testcase}" todir="${reports.xml.dir}" if="testcase" /> 
     <batchtest todir="${reports.xml.dir}" unless="testcase"> 
      <fileset dir="TestSource"> 
       <include name="**/*Test.java" /> 
       <exclude name="**/XmlTest.java" /> 
       <exclude name="**/ElectedOfficialTest.java" /> 
       <exclude name="**/ThematicManagerFixturesTest.java" /> 
      </fileset> 
     </batchtest> 
    </junit> 
</target> 

¿Mi configuración y salida parecen correctas? ¿Es normal que las pruebas unitarias demoren 2.234 segundos cuando se ejecutan solos y cuando se ejecutan en el script de compilación con Cobertura demoran 3 minutos?

+0

No veo cuál es el problema (además de usar Ant :-P), pero este tipo de retraso no es definitivamente normal. –

+0

Supongo que tiene otra herramienta preferida que no sea Ant? ¿Qué recomendarías? –

+0

maven y gradle son enormes mejoras sobre la hormiga. agregar cobertura a un proyecto de maven es trivial. –

Respuesta

8

De cobertura-anttask reference:

Por esta misma razón, si usted está utilizando la hormiga 1.6.2 o superior, entonces usted podría querer conjunto forkmode = "una vez" Esto hará que sólo una JVM para be iniciado para todas sus pruebas JUnit, y reducirá la sobrecarga de Cobertura leer/escribir el archivo de datos de cobertura cada vez que se inicia/se detiene una JVM .

(El énfasis es mío.)

+1

funcionó perfecto, gracias! –