Покрытие Eclipse PowerMock с ECLEmma - PullRequest
0 голосов
/ 15 марта 2019

Я использую Mockito и PowerMock с JUnit . Используемый инструмент покрытия - ECLEmma . Код, который тестируется модулем PowerMock, покрытие отображается красным (непокрытый).

Вот мои макетные зависимости POM

<powermock.version>1.6.5</powermock.version>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-javaagent</artifactId>
    <version>2.0.0</version>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4-rule</artifactId>
    <version>2.0.0</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>

Когда я использую

@RunWith(PowerMockRunner.class)

Junit работает успешно. но все покрытие КРАСНОЕ. Ничто не покрывается

Пересмешливая ссылка, используемая в Junit -

whenNew().withArguments.thenReturn();
ClassName someName = mock(ClassName.class);
WhiteBox.setInternal(classObject, String, classObject2);
Mockito.when().thenReturn();

Я пытался подписаться на этот пост Проблема покрытия PowerMock ECLEmma и http://www.notonlyanecmplace.com/make-eclemma-test-coverage-work-with-powermock/

Но когда я добавлю -

@Rule
    public PowerMockRule rule = new PowerMockRule();
    static {
      PowerMockAgent.initializeIfNeeded();
    }

вижу ошибку

    java.lang.NoClassDefFoundError: org/powermock/classloading/ClassloaderExecutor
        at org.powermock.modules.junit4.rule.PowerMockRule.apply(PowerMockRule.java:44)
        at org.junit.runners.BlockJUnit4ClassRunner.withMethodRules(BlockJUnit4ClassRunner.java:365)
        at org.junit.runners.BlockJUnit4ClassRunner.withRules(BlockJUnit4ClassRunner.java:355)
        at 
    Caused by: java.lang.ClassNotFoundException: org.powermock.classloading.ClassloaderExecutor
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 18 more

Любые предложения о том, как это можно решить?

У меня такая ситуация -

 SomeClassName mockedObjectOfSomeClassName = mock(SomeClassName.class);

  whenNew(SomeClassName.class)
   .withArguments("localhost", 8080)
   .thenReturn(mockedObjectOfSomeClassName);

Чтобы решить исходную проблему, могут ли некоторые помочь мне сначала преобразовать это утверждение в

doReturn().when(); 

формат? Мне сказали, если мы сделаем это, это должно решить проблему.

...