2013-08-06 38 views
17

Ostatnio dodałem wtyczkę Cobertura do mojego projektu Java/Spring-MVC. Najdziwniejsze jest to, że wszystkie moje testy jednostkowe mijały, a oni nadal przechodzą gdy Maven ma swój początkowy rozruch próbny, ale wtedy, gdy Cobertura próbuje uruchomić testy, wszystkie one nie z tym samym komunikatem o błędzie:Testy jednostkowe przechodzące przez Mavena, ale kończące się niepowodzeniem przez Coberturę: "Oczekiwanie ramki stosu ramek w docelowej gałęzi 65"

Expecting a stackmap frame at branch target 65 in method xxx.xxxx.xxxx.xxxx;)V at offset 40 

Nie mam pojęcia, dlaczego tak się dzieje i nawet nie wiem, jak to naprawić. Przeszukałem Internet, ale nie znalazłem żadnych podobnych problemów. Do testowania używam JUnit i spring-test-mvc.

Czy ktoś to widział wcześniej?

+0

To wydaje się być częstym problemem, z bardzo podobnych pytań zamieszczonych na SO. Wysłałem tę rezolucję, aby nasz problem został rozwiązany w następujący sposób: http://stackoverflow.com/a/20001391/1279002 – theINtoy

+1

Ten sam problem napotkałem podczas korzystania z cobertura-maven-plugin w wersji 2.4. To działało zarówno dla JDK_1.7.0_79, jak i JDK_1.8.0_45, kiedy uaktualniłem cobertura-maven-plugin do wersji 2.7. – user2432405

Odpowiedz

19

Oczywiście mogę znaleźć właściwą odpowiedź na pytanie po pytaniu, choć szukałem dość chwilę przed ...

Problemem jest to, że Cobertura ma problemy w pracy z Java 1.7. Należy dodać następującą linię do pom.xml:

<argLine>-XX:-UseSplitVerifier</argLine> 

To idzie w elemencie konfiguracji. Oto cała sekcja firmy Cobertura:

 <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.5.1</version> 
      <configuration> 
       <argLine>-XX:-UseSplitVerifier</argLine> 
       <formats> 
        <format>xml</format> 
       </formats> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>test</phase> 
        <goals> 
         <goal>cobertura</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

Teraz wszystko działa zgodnie z oczekiwaniami.

+0

Proszę, proszę, uproś moje pytanie. :-) – Jagger

+6

Cobertura 2.6 również to naprawia. –

3

Stała przy użyciu nowej wtyczki

    <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>cobertura-maven-plugin</artifactId> 
         <version>2.7</version> 
         <configuration> 
          <formats> 
           <format>xml</format> 
          </formats> 
         </configuration> 
         <executions> 
          <execution> 
           <phase>package</phase> 
           <goals> 
            <goal>cobertura</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
+0

TAK! Próbowałem -noverify, wypróbowałem -XX: -UseSplitVerifier i nie miałem szczęścia. Używam java 1.8 i to właśnie dla mnie zadziałało. spędził 4 godziny na tym! Mam nadzieję, że ta odpowiedź spotka się z innymi osobami z tym samym problemem – Mason