Bevezetés a Cobertura-ba

1. Áttekintés

Ebben a cikkben bemutatjuk a kód lefedettségi jelentések generálása a Cobertura segítségével.

Egyszerűen fogalmazva: a Cobertura egy olyan jelentéskészítő eszköz, amely kiszámítja a kódbázis teszt lefedettségét - az elágazások / vonalak százalékos arányát, amelyeket az egység tesztek elérnek egy Java projektben.

2. Maven plugin

2.1. Maven konfiguráció

A Java-projektben a kód lefedettségének megkezdéséhez meg kell deklarálja a Cobertura Maven plugint a pom.xml fájl a jelentési szakasz alatt:

   org.codehaus.mojo cobertura-maven-plugin 2.7 

A plugin legújabb verzióját mindig ellenőrizheti a Maven központi adattárában.

Miután elkészült, menjen előre, és futtassa a Maven-t megadva cobertura: cobertura mint cél.

Ez létrehoz egy részletes HTML stílusú jelentést, amely bemutatja a kódolással gyűjtött kód lefedettségi statisztikákat:

A vonal lefedettség mutatója megmutatja, hogy hány utasítás van végrehajtva az egység tesztek futnak, míg az ág lefedettség mutató arra összpontosít, hogy hány ágat fednek le ezek a tesztek.

Minden feltételhez két ága van, tehát alapvetően kétszer annyi ága lesz, mint a feltételeknek.

A bonyolultsági tényező a kód összetettségét tükrözi - akkor emelkedik, ha a fiókban az ágak száma növekszik.

Elméletileg minél több elágazásod van, annál több tesztet kell végrehajtanod az elágazás lefedettségének növelése érdekében.

2.2. Kód lefedettség számítás és ellenőrzések konfigurálása

A kód használatával figyelmen kívül hagyhat vagy kizárhat egy adott osztálykészletet figyelmen kívül hagyni és a kizárni címkék:

 org.codehaus.mojo cobertura-maven-plugin 2.7 com / baeldung / algoritmusok / dijkstra / * com / baeldung / algoritmusok / dijkstra / * 

A kód lefedettség kiszámítása után jön a jelölje be fázis. A jelölje be szakasz biztosítja a kód lefedettségének bizonyos szintjének elérését.

Itt van egy alapvető példa a jelölje be fázis:

  igaz 75 85 75 85 75 85 com.baeldung.algorithms.dijkstra. * 60 50 

A haltOnFailure flag, a Cobertura az építést meghiúsítja, ha a megadott ellenőrzések egyike meghiúsul.

A branchRate / lineRate a címkék meghatározzák a kódolás után szükséges minimális elfogadható elágazás / vonal lefedettségi pontszámot. Ezek az ellenőrzések kibővíthetők a csomag szintjére a packageLineRate / packageBranchRate címkék.

Az is használható, hogy deklaráljunk egy adott mintát követő névvel rendelkező osztályokhoz speciális szabályellenőrzéseket a regex címke. A fenti példában biztosítjuk, hogy egy adott vonal / elágazás lefedettségi pontszámot kell elérni a com.baeldung.algorithms.dijkstra csomag és alatt.

3. Eclipse beépülő modul

3.1. Telepítés

A Cobertura Eclipse bővítményként is elérhető eCobertura. Telepítés céljából eCobertura az Eclipse esetében kövesse az alábbi lépéseket, és telepítenie kell az Eclipse 3.5 vagy újabb verzióját:

1. lépés: Az Eclipse menüből válassza a lehetőséget SegítségTelepítse az új szoftvert. Aztán a dolgozni vele mezőbe írja be //ecobertura.johoop.de/update/:

2. lépés: Válassza a lehetőséget eCobertura kód lefedettség, kattintson a „tovább” gombra, majd kövesse a telepítővarázsló lépéseit.

Most, hogy eCobertura telepítve van, indítsa újra az Eclipse alkalmazást, és jelenítse meg a lefedettségi munkamenet nézetet Windows → Nézet megjelenítése → Egyéb → Cobertura.

3.2. Az Eclipse Kepler vagy későbbi használata

Az Eclipse újabb verziójához (Kepler, Luna stb.) Az eCobertura problémákat okozhat a JUnit-rel kapcsolatban - az Eclipse-hez csomagolt JUnit újabb verziója nem teljesen kompatibilis a eCoberturaFüggőség-ellenőrző:

A telepítés nem fejezhető be, mert egy vagy több szükséges elem nem található. Telepítendő szoftver: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) Hiányzó követelmény: eCobertura UI.2019.8.77202152 (ecobertura.ui 0.9.8.20177202152) megköveteli a „csomagot a szerveren.junit4 0.0.0 Nem elégítheti ki a függőséget: Feladó: eCobertura 2014.9.8.77202152 (ecobertura.feature.group.2019.8.9.7202152) Címzett: ecobertura.ui [2014.9.8.77202152]

Megkerülő megoldásként letölthet egy régebbi JUnit verziót, és elhelyezheti az Eclipse plugins mappában.

Ez a mappa törlésével történhet org.junit. *** tól től % ECLIPSE_HOME% / plugins, majd másolja ugyanazt a mappát egy régebbi Eclipse telepítésről, amely kompatibilis eCobertura.

Egyszer kész, indítsa újra az Eclipse IDE programot, és telepítse újra a bővítményt a megfelelő frissítési webhely használatával.

3.3. Kód lefedettségi jelentések az Eclipse-ben

A kód lefedettségének Unit Test segítségével történő kiszámításához kattintson a jobb gombbal a projektre / tesztre a helyi menü megnyitásához, majd válassza az opciót Fedje le a következőt: → JUnit teszt.

Alatt Lefedettségi munkamenet nézetben osztályonként ellenőrizheti a vonal / ág lefedettség jelentését:

A Java 8 felhasználói gyakori hibát tapasztalhatnak a kód lefedettségének kiszámításakor:

java.lang.VerifyError: stackmap keret várása az ág célpontjánál ...

Ebben az esetben a Java arra panaszkodik, hogy egyes módszerek nem rendelkeznek megfelelő veremtérképpel, a Java újabb verzióiban bevezetett szigorúbb bájtkód-ellenőrző miatt.

Ez a probléma megoldható az ellenőrzés letiltásával a Java virtuális gépen.

Ehhez kattintson a jobb gombbal a projektre a helyi menü megnyitásához, válassza a lehetőséget Cover As, majd nyissa meg a Lefedettségi konfigurációk Kilátás. Az argumentumok lapon adja hozzá a -újítsa meg jelző, mint virtuális gép argumentum. Végül kattintson a gombra lefedettség gomb a lefedettség számításának elindításához.

Használhatja a zászlót is -XX: -UseSplitVerifier, de ez csak a Java 6 és 7 esetén működik, mivel a megosztott ellenőrzőt a Java 8 már nem támogatja.

4. Következtetés

Ebben a cikkben röviden bemutattuk, hogyan lehet a Coberturát használni a Java-projektek lefedettségének kiszámításához. Leírtuk a telepítéshez szükséges lépéseket is eCobertura az Eclipse környezetében.

A Cobertura egy nagyszerű, mégis egyszerű kódfedezeti eszköz, de nem aktívan karbantartott, mivel jelenleg felülmúlják az olyan újabb és erősebb eszközök, mint a JaCoCo.

Végül megnézheti a cikkben található példát a GitHub projekt.


$config[zx-auto] not found$config[zx-overlay] not found