2016-12-20 20 views
2

私はCoberturaを数ヶ月間使用していましたが、最近、特定のターゲット位置から "Error Reading .ser file"Cobertura:ファイルを読み込む際にエラーが発生しました。cobertura.ser:null java.io.EOFException:null

CoberturaのMavenプラグインのバージョン:2.7

Javaバージョン:事前に1.8

[INFO] Cobertura 2.1.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file 
[ERROR] Cobertura: Error reading file C:\view\ 
xyz\target\cobertura\cobertura.s 
er: null 
java.io.EOFException: null 
     at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputSt 
ream.java:2626) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1321) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:20 
18) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942) 
~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 
808) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) ~[na 
:1.8.0_102] 
     at java.util.HashMap.readObject(HashMap.java:1404) ~[na:1.8.0_102] 
     at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[na:na] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) ~[na:1.8.0_102] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102] 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:105 
8) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909) 
~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 
808) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:20 
18) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:50 
3) ~[na:1.8.0_102] 
     at net.sourceforge.cobertura.coveragedata.CoverageDataContainer.readObje 
ct(CoverageDataContainer.java:321) ~[cobertura-2.1.1.jar:2.1.1] 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) ~[na:na] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) ~[na:1.8.0_102] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102] 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:105 
8) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909) 
~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 
808) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) ~[na 
:1.8.0_102] 
     at java.util.HashMap.readObject(HashMap.java:1404) ~[na:1.8.0_102] 
     at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[na:na] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) ~[na:1.8.0_102] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102] 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:105 
8) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909) 
~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 
808) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:20 
18) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:50 
3) ~[na:1.8.0_102] 
     at net.sourceforge.cobertura.coveragedata.CoverageDataContainer.readObje 
ct(CoverageDataContainer.java:321) ~[cobertura-2.1.1.jar:2.1.1] 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) ~[na:na] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) ~[na:1.8.0_102] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102] 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:105 
8) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909) 
~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 
808) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) ~[na 
:1.8.0_102] 
     at java.util.HashMap.readObject(HashMap.java:1404) ~[na:1.8.0_102] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8. 
0_102] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:62) ~[na:1.8.0_102] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) ~[na:1.8.0_102] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102] 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:105 
8) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909) 
~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 
808) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:20 
18) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:50 
3) ~[na:1.8.0_102] 
     at net.sourceforge.cobertura.coveragedata.CoverageDataContainer.readObje 
ct(CoverageDataContainer.java:321) ~[cobertura-2.1.1.jar:2.1.1] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8. 
0_102] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:62) ~[na:1.8.0_102] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) ~[na:1.8.0_102] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102] 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:105 
8) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909) 
~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 
808) ~[na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) ~[ 
na:1.8.0_102] 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) ~[na 
:1.8.0_102] 
     at net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler.loadCo 
verageData(CoverageDataFileHandler.java:85) ~[cobertura-2.1.1.jar:2.1.1] 
     at net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler.loadCo 
verageData(CoverageDataFileHandler.java:62) ~[cobertura-2.1.1.jar:2.1.1] 
     at net.sourceforge.cobertura.dsl.Cobertura.getProjectDataInstance(Cobert 
ura.java:146) [cobertura-2.1.1.jar:2.1.1] 
     at net.sourceforge.cobertura.dsl.Cobertura.report(Cobertura.java:122) [c 
obertura-2.1.1.jar:2.1.1] 
     at net.sourceforge.cobertura.reporting.ReportMain.parseArgumentsAndRepor 
t(ReportMain.java:91) [cobertura-2.1.1.jar:2.1.1] 
     at net.sourceforge.cobertura.reporting.ReportMain.generateReport(ReportM 
ain.java:141) [cobertura-2.1.1.jar:2.1.1] 
     at net.sourceforge.cobertura.reporting.ReportMain.main(ReportMain.java:1 
51) [cobertura-2.1.1.jar:2.1.1] 
Report time: 1031ms 

おかげ.Doesの誰もが、私は以下のエラーを取得していますなぜアイデアを持っています。

答えて

1

通常、.serファイルは、レポートを生成するためにcoberturaに割り当てられたメモリが不足している場合にのみロックされます。解決策は

1)では、以下の

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.7</version> 
      <configuration> 
       <quiet>true</quiet> 
       <cobertura.maxmem>1024m</cobertura.maxmem> 
       <instrumentation> 
        <excludes> 
         <exclude>com/homepage/helper/ABC.class</exclude> 

        </excludes> 
        <ignores> 
         <!-- <ignore>com..homepage..helper.ABC</ignore> --> 
        </ignores> 
        <maxmem>1024m</maxmem> 
       </instrumentation> 
       <argLine>-Xms512m -Xmx2048m -XX:MaxPermSize=1024m</argLine> 
       <!-- <argLine>-Xmx2048m</argLine> --> 
      </configuration> 
      <executions> 
       <execution> 
        <id>clean</id> 
        <phase>pre-site</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>instrument</id> 
        <phase>site</phase> 
        <goals> 
         <goal>instrument</goal> 
         <goal>cobertura</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

のようなものを)のsrc /テスト/ Javaおよび実行Coberturaのか からすべての不要なテストクラスファイルを削除しますCoberturaののメモリサイズを大きくしなければなりませんpom.xmlを変更するだけで、cobertura.maxmemのサイズが必要なものに変更されます。また、レポートを生成する際にいくつかのクラスを無視するというオプションがあります。

3)さらに、確実プラグインのバージョンがサポートされていない可能性がもう1つあります。上記の二つの解決策は、(のmaven-確実な-プラグイン 2.12でなければなりません)以下のような確実なバージョンをアップデートしてみてくださいその後、機能していない場合は、次の

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <dependencies> 
       <dependency> 
        <groupId>org.apache.maven.surefire</groupId> 
        <artifactId>surefire-junit47</artifactId> 
        <version>2.17</version> 
       </dependency> 
      </dependencies>    
      <configuration>      
        <groups>${testcase.include}</groups> 
        <excludedGroups>${testcase.exclude}</excludedGroups> 
      </configuration> 

     </plugin> 

はそれが便利だと思います。

1

上記のとおりメモリを更新しようとしましたが、それは私たちのためにはうまくいきませんでした。これらのクラスはありませんでしたので、私たちは

@RunWith(PowerMockRunner.class) 

偶然にもクラスレベルの注釈で飾られた約60のテストクラスを持っていた

:しかし、うっかり別の方法を経由して(少なくとも、または救済)「ソリューション」になってい( - JaCoCo同じである - 実際にコードカバレッジのためEclEmmaを使用する既知の問題)我々のローカル環境でのカバレッジを示し、Iは...

@RunWith(PowerMockRunner.class) 

に注釈を変換しようとしました

私たちが持っていた60のうち30を変換することができました。これらのすべてを変換することはできませんでしたが、一部は静的メソッドのテストを許可するなど、テストでPowerMockの機能に関連付けられています。しかし、PowerMockRunnerの注釈をMockitoJUnitRunnerに変換することは、上記のエラーのようにCoberturaのエラーを解決するという上記の問題を解決しています。 Coberturaは@RunWith(PowerMockRunner.class)のクラスについてカバレッジを表示しているので、なぜこれが正確になるのかについては、まだ実質的な答えを出すことはできません。しかし、私が知っている限り、私はこの記事を更新します。

+0

@RunWith(PowerMockRunner.class)のカバレッジレポートを表示することがあります。時には、なぜcoberturaが有線で動作しているのかわかりません。 –

関連する問題