2016-02-16 16 views
12

Nie mogę zrozumieć, w jaki sposób Cobertura współpracuje z JUnit. Jak zrozumiałem, cobertura modyfikuje skompilowany kod bajtu i wstawia w tym kodzie bajtowym swoje własne polecenia. Ok. Następnie uruchamiamy framework Junit i uruchamiamy testy. Czy ktokolwiek mógłby wyjaśnić, w jakich punktach cobertura otrzymuje informacje, które z jego poleceń zostały wykonane?Jak działa Cobertura z JUnit?

Odpowiedz

7

Firma Cobertura używa ASM, która służy do manipulacji i analizy ogólnego kodu bajtowego. W każdym wierszu kodu Java są dodawane 3 wiersze do istniejących klas, aby policzyć rzeczy w raporcie, który generuje. Gdy Cobertura znajdzie się w Twojej ścieżce klas i zostanie poprawnie skonfigurowany, a wykonasz testy jednostkowe, wygeneruje plik danych o nazwie cobertura.ser, który jest używany do tworzenia raportów xml lub html.

Podstawowe użycie: z Maven: http://www.mojohaus.org/cobertura-maven-plugin/usage.html

+0

Dziękuję za odpowiedź. Jednak nie rozumiem - uruchamiamy junit nie cobertura. W jaki sposób z tych 3 linii od dodanych raportów kodowych są generowane? Czy każdy z tego 3 liniowego kodu pisze do cobertura.ser? –

+0

Cobertura jest automatycznie oprzyrządowana po uruchomieniu testów jednostkowych. Jest to rodzaj oblewania rzeczy, która dzieje się automatycznie, gdy masz ją skonfigurowaną w pliku POM (jeśli korzystasz z Mavena) lub pliku build.xml (jeśli używasz ANT). Nie uruchamiasz go bezpośrednio, ale jest on wywoływany za pośrednictwem wtyczki Maven, gdy jest poprawnie skonfigurowany. HTH – Griff

2

Cobertura monitoruje testy przez instrumentacji kodu bajtowego z dodatkowych sprawozdań do logowania, które linie są i nie są osiągnięte jako zestaw testów wykonuje.

Firma Cobertura oblicza zasięg zarówno liczby testowanych linii, jak i liczby badanych gałęzi. W przypadku pierwszego przejścia różnica między tymi dwoma elementami nie ma większego znaczenia. Cobertura oblicza również średnią cykliczną złożoność McCabe'a dla klasy.

przypadku korzystania Maven może być skonfigurowany w POM:

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>cobertura-maven-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <formats> 
       <format>html</format> 
       <format>xml</format> 
      </formats> 
     </configuration> 
    </plugin> 

przypadku korzystania ANT może być skonfigurowany ze stwierdzeniem zawartym w pliku build.xml taskdef:

<taskdef classpathref="cobertura.classpath" resource="tasks.properties"/> 

Odniesienia ant- integracja cobertura można znaleźć pod adresem https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference

+0

Dziękuję za odpowiedź. Jednak nie chodzi o to, jak prowadzić koberturę z mavenem lub mrówką. Pytanie brzmi, w jaki sposób cobertura współpracuje z junit. –

Powiązane problemy