2017-11-16 27 views
0

누군가가 중복 질문을 내리 뽑기 전에 ....이 주제와 관련된 다른 모든 StackOverflow 답변을 읽었으며 아무 것도 내 질문에 대답하지 않았습니다.EclEmma 코드 커버리지 문제가있는 JMockit

그래서 JMockit 1.19를 사용하고, 아래 Jmockit 및 Junit와

<dependency> 
    <groupId>org.jmockit</groupId> 
    <artifactId>jmockit</artifactId> 
    <version>1.19</version> 
</dependency> 


<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.7</version> 
</dependency> 

이클립스 마켓 플레이스를 통해 설치로 내가 EclEmma 2.3.2 플러그인을 사용하고 내 pom.xml 파일 종속성입니다.

그러나 코드 커버리지를 보려고하면 여러 가지 문제가 동시에 발생합니다. 나는 다음과 같은 예외 로그를 ​​얻을 하나

:

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386) 
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401) 
Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented. 
    at org.jacoco.agent.rt.internal_9dd1198.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138) 
    at org.jacoco.agent.rt.internal_9dd1198.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:99) 
    at org.jacoco.agent.rt.internal_9dd1198.PreMain.createRuntime(PreMain.java:55) 
    at org.jacoco.agent.rt.internal_9dd1198.PreMain.premain(PreMain.java:47) 
    ... 6 more 
Caused by: java.lang.NoSuchFieldException: $jacocoAccess 
    at java.lang.Class.getField(Class.java:1695) 
    at org.jacoco.agent.rt.internal_9dd1198.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:136) 
    ... 9 more 
FATAL ERROR in native method: processing of -javaagent failed 
Exception in thread "main" 
성공적으로 내가 실행 JMockit을 얻기 위하여 나는 또한 말씀이 팝업을 얻을

....

popup 1) - "No coverage data has been collected during this coverage session. Please do not terminate the Java process manually from Eclipse." 

pupup 2) - "Error while dumping coverage data (code 5013). com.mountainminds.eclemma.internal.core.launching.AgentServer" 

JVM을 인수

-javaagent:C:/Users/vn90614/.m2/repository/org/jmockit/jmockit/1.19/jmockit-1.19.jar 

를 제공하는 난이 인수 문제에 realted 생각

+0

모든 것을 위해 정말 오래된 버전을 사용하고 있습니다 (JUnit, JMockit, EclEmma). JaCoCo (EclEmma 플러그인 뒤에있는 커버리지 라이브러리)와 JMockit은 이와 같은 문제에 대한 수정 및 개선이 이루어 졌으므로 최신 버전으로 업그레이드 할 수있는 경우에는 사라질 가능성이 큽니다. –

+0

불행히도 이것은 작업을위한 것이며 리포지토리의 버전을 사용해야합니다. 그들이 버전을 업그레이드 할 수 있는지 알게 될 것입니다. – Mason

답변

0

좋아요, 그래서이 문제를 해결하고 사무실에있는 모든 사람들에게 물어 본 거의 1 주일 후에이 문제를 해결했습니다. 빌드 경로에서 다른 프로젝트를 연결했는데 이것이이 문제의 원인이었습니다. 뿐만 아니라이 영향을 미쳤지 만 JMockit, Mockito 및 PowerMock 기능에 많은 문제가 발생했습니다. 빌드 경로에서 프로젝트를 링크하면 테스트 프레임 워크 및 코드 범위에 문제가 발생할 수 있습니다.