JMockit с проблемой покрытия кода EclEmma

Прежде чем кто-нибудь понизит меня за дублирующийся вопрос... Я прочитал все остальные ответы StackOverflow, связанные с этой темой, и на мой вопрос не ответили.

Итак, я использую JMockit 1.19, ниже приведены мои зависимости pom.xml для 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, установленный через Eclipse Marketplace.

Однако я получаю сразу несколько разных проблем, когда пытаюсь просмотреть покрытие своего кода.

Для одного я получаю следующий журнал исключений:

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" 

Я также получаю два всплывающих окна, которые говорят....

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"

Чтобы заставить JMockit успешно работать, я предоставляю аргумент JVM

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

Я думаю, что этот аргумент относится к проблеме


person Mason    schedule 16.11.2017    source источник
comment
Вы используете действительно старые версии для всего (JUnit, JMockit и EclEmma). И в JaCoCo (библиотека покрытия для плагина EclEmma), и в JMockit есть исправления и улучшения для подобных проблем, поэтому, если вы сможете обновиться до последних версий, есть большая вероятность, что это исчезнет.   -  person Rogério    schedule 16.11.2017
comment
К сожалению, это для работы, и мне приходится использовать версии из их репозиториев. Я посмотрю, смогут ли они обновить версии.   -  person Mason    schedule 16.11.2017


Ответы (1)


Итак, я НАКОНЕЦ решил эту проблему после почти недели работы над этим и опроса всех в офисе. Я связал другой проект на моем пути сборки, и это вызвало эту проблему. Это не только повлияло на это, но и вызвало массу проблем с функциями JMockit, Mockito и PowerMock. Связывание проектов на вашем пути сборки БУДЕТ вызывать проблемы для тестирования фреймворков и покрытия кода.

person Mason    schedule 21.11.2017