Niedawno zintegrowałem Coberturę z moimi skryptami do budowania Ant i zastanawiam się, czy zrobiłem to poprawnie, ponieważ znacznie spowolniło to czas potrzebny do uruchomienia testów jednostkowych.Testowanie jednostek powoli z Coberturą
Oto wyjście konsola próbki:
...
[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.
...
Wydaje się podejrzane, że po każdym przebiegu testu mówi Cobertura:
[junit] Cobertura: Loaded information on 282 classes.
[junit] Cobertura: Saved information on 282 classes.
...
Oto moja jednostka zadanie Test z mojego Ant skryptu build:
<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>
Czy moja konfiguracja i dane wyjściowe wydają się być poprawne? Czy to normalne, że testy jednostkowe trwają 2.234 sekundy, gdy są uruchamiane samodzielnie, a kiedy są uruchamiane w skrypcie kompilacji z Coberturą, trwają 3 minuty?
nie widzę, co jest problemem (oprócz wykorzystania Ant :-P), ale tego rodzaju opóźnienia na pewno nie jest normalne. –
Zakładam, że masz inne preferowane narzędzie niż Ant? Co byś polecił? –
maven i gradle są zarówno ogromne ulepszenia w stosunku do ant. dodanie cobertury do projektu maven jest banalne. –