2016-12-20 30 views
2

저는 몇 달 동안 Cobertura에서 일해 왔으며 최근에는 특정 대상 위치에서 "Error Reading .ser file"오류가 발생합니다.Cobertura : 파일을 읽는 중 오류가 발생했습니다. cobertura.ser : null java.io.EOFException : null

Cobertura 받는다는 플러그인 버전 : 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/테스트/자바 및 실행 cobertura 또는

2

에서 불필요한 모든 테스트 클래스 파일을 삭제 cobertura의 메모리 크기를 증가해야한다 pom.xml 그냥 cobertura.maxmem 우리가 원하는대로 크기를 변경하고 우리는 또한 보고서를 생성하는 동안 몇 가지 클래스를 무시 같은 옵션이 있습니다.

3) 그리고 확실한 플러그인 버전이 지원되지 않을 가능성이 더 있습니다.

<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> 

그것이 유용 희망 : 만약 위의 두 가지 솔루션 (2.12이어야한다 받는다는 - 확실한 - 플러그인) 다음과 같은 확실한 버전을 업데이트 시도 후 작동하지 않습니다.

1

위와 같이 메모리를 업데이트하려고 시도했지만 문제가 해결되지 않았습니다. 이러한 클래스가 아니었다 이후, 우리는

@RunWith(PowerMockRunner.class) 

동시 클래스 수준 주석 장식 된 약 60 테스트 클래스를했다

그러나, 실수로 다른 방법을 통해 (이상 또는 치료)는 '솔루션'발견 (- JaCoCo과 동일 - 실제로 코드 커버리지에 대한 EclEmma를 사용하여 알려진 문제) 우리 지역의 환경에서 적용 범위를 보여, 나는 ...

@RunWith(PowerMockRunner.class) 

에 주석을 전환 시도
@RunWith(MockitoJUnitRunner.class) 

약 60 개를 변환 할 수있었습니다. PowerMock의 모든 기능을 변환 할 수는 없지만 일부는 정적 방법의 테스트를 허용하는 것과 같이 테스트에서 PowerMock 기능과 관련되어 있기 때문에 모든 기능을 변환 할 수는 없습니다. 그러나 PowerMockRunner에서 MockitoJUnitRunner로 주석을 변환하는 것은 여전히 ​​위의 오류에 따라 Cobertura의 오류를 해결하는 위의 문제를 해결했습니다. Cobertura가 @RunWith (PowerMockRunner.class) 클래스의 적용 범위를 보여주기 때문에 왜 이것이 정확하게 될지에 대한 실질적인 대답은 아직 없습니다. 그러나 나는 내가 알기에이 게시물을 업데이트 할 것이다.

+0

가끔은 @RunWith (PowerMockRunner.class)에 대한 적용 범위 보고서를 표시하고 때로는 cobertura가 유선 동작을하는 이유를 모르겠다 ..... –