2013-03-05 14 views
8

Mam projekt Maven z testowym przykładem DefaultViewTypeToFragmentMapperTest.java w katalogu /src/test/java/test/com/mycompany/myproduct/android/viewtype2fragmentmapper/.cobertura-maven-plugin nie obejmuje konfiguracji

Chcę, aby ten przypadek testowy został wykluczony z obliczania zasięgu testu jednostkowego. Aby osiągnąć ten wynik, ja skonfigurowany plugin tak:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>2.5.2</version> 
    <configuration> 
     <formats> 
      <format>html</format> 
      <format>xml</format> 
     </formats> 
     <instrumentation> 
      <excludes> 
       <exclude>test/co/**/*.class</exclude> 
      </excludes> 
     </instrumentation> 
    </configuration> 
</plugin> 

Ale wciąż widzę wspomnianą klasę w raporcie pokrycia.

Jak mogę to naprawić, aby przypadek testowy nie pojawił się w raporcie i jego zasięg (0% zgodnie z raportem) nie został uwzględniony?

+2

Czy skonfigurowałeś wtyczkę cobertura-maven jako element raportowania lub kompilacji? Jeśli skonfigurowałeś raportowanie, użyj strony 'mvn'. Jeśli chcesz wykonać 'mvn cobertura: cobertura', skonfiguruj jako kompilację. Proszę zobaczyć moją odpowiedź na http://stackoverflow.com/questions/15133822/cant-use-custom-ruleset-in-maven-pmd-plugin-5-0-2/15153145#15153145 w celu uzyskania dalszych informacji. –

+0

Skonfigurowałem go jako część węzła '' i używam go tylko w zakresie 'witryny mvn'. –

Odpowiedz

6

Powinieneś użyć znacznika <ignore>.

<configuration> 
    <instrumentation> 
    <ignores> 
     <ignore>com.example.boringcode.*</ignore> 
    </ignores> 
    </instrumentation> 
</configuration> 

<exclude> zużyć w ciągu <instrumentation> prostu wyłącza pakiet od tego, co twój instrumentacji. Co w tym przypadku jest niczym, ponieważ nic nie robisz.

Patrz: Mojo Maven Cobertura Plugin docs here.

+0

Próbowałem tego i to nie pomaga. –

+0

OK, powróćmy do oświadczenia wykluczającego. Czym jest dla ciebie klasa test/co/**/*. Test, którego próbujesz wykluczyć, nie znajduje się w tej strukturze pakietów. – ninnemannk

+0

Dokumentacja tak naprawdę nie wyjaśnia różnicy między 'exclude' lub' ignore'. – FrustratedWithFormsDesigner

5

Czy to literówka?

<exclude>test/co/**/*.class</exclude>.

Powinien być , który powinien być com.

BTW, <ignores> instruuje firmę Cobertura, aby ignorowała wszelkie wywołania dowolnej metody pasującej do ignorowanego wyrażenia regularnego. To będzie pominąć te klasy podczas instrumentacji. Aby wykluczyć klasy z oprzyrządowania, należy użyć <excludes>.

+1

Nie, nie jest. 'Nazwa pakietu test.co.mycompany. * Jest poprawna. –

+0

Cóż, nazwa twojego folderu nie pasuje do tej nazwy pakietu. Musisz wpisać "com" Twój post mówi, że kod znajduje się w "/ src/test/java/test/com/mycompany/myproduct/android" –

4

Nie należy dołączyć .class jak w poniższym przykładzie

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>2.5.2</version> 
    <configuration> 
     <formats> 
      <format>html</format> 
      <format>xml</format> 
     </formats> 
     <instrumentation> 
      <excludes> 
       <exclude>test/co/**/*</exclude> 
      </excludes> 
     </instrumentation> 
    </configuration> 
</plugin> 

Mam nadzieję, że to może pomóc.

+0

Próbowałem tego. Niestety, to nie działa. –

+0

usunięcie .class rozwiązało to dla mnie – jkerak

8

Po wielu próbach i niepowodzeniach pracowałem.

  1. Edytuj pom.
  2. mvn czysta próba kompilacji
  3. mvn Cobertura: cobertura
  4. Otwórz ponownie stronę z Firefoxa. (Upewnij się, że strona nie jest buforowane)

mam go pracować:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>2.6</version> 
     <configuration> 
      <instrumentation> 
       <excludes> 
        <exclude>aaa/**/*.class</exclude> 
        <exclude>com/test/bbb/**/*.class</exclude> 
       </excludes> 
      </instrumentation> 
     </configuration> 
</plugin> 

zmiana „aaa” z początku nazwy pakietu mają być wyłączone. Zmień "bbb" z nazwą pakietu, który chcesz wykluczyć z raportu.

Mam nadzieję, że to pomaga, Marc Andreu

2

Właśnie straciłem dwie godziny mojego życia coraz wykluczeniu na Cobertura być wyłączone, ale w końcu się udało.

Roztwór że stwierdzone jest, że układ wtyczki z oprzyrządowania & wykluczania dla Cobertura-maven-musi być ona Build/wtyczek lub budowę/pluginManagement rozdział POM, podczas gdy również może być odniesienie do kobierca-maven-plugin w rozdziale sprawozdawczym.

Pułapka polega na tym, że początkowo zaczynasz od zdefiniowania wtyczki w rozdziale raportowania, w przeciwnym razie raport nie zostanie wygenerowany. Ale sama oprzyrządowanie nie odbiera żadnej konfiguracji od tej części pom. Musisz to zdefiniować w rozdziale budowania.

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>2.7</version> 
       <configuration> 
        <instrumentation> 
         <excludes> 
          <exclude>my/exclusion/package/**</exclude> 
         </excludes> 
        </instrumentation> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</reporting> 
0

Oprócz odpowiedzi BertKoor „s, chciałbym podkreślić, że jeśli wykonanie mvn cobertura:cobertura lub mvn cobertura:cobertura-integration-test bezpośrednio, Twój raport będzie nadal obejmują pokrycie wszystkich oprzyrządowanych klas znajdujących się w katalogu docelowym , jak donosi here!

Jeśli jest to przypadek, upewnij się zrobić mvn **clean** cobertura:cobertura aby oczyścić docelową dir z poprzedniej kompilacji najpierw a następnie instrument i uruchomić swoje testy.

Powiązane problemy