Jacoco не показывает охват классов PowerMockito

Мы используем Jacoco и eclemma для покрытия тестовых случаев. Для классов, которые не используют PowerMockRunner, мы получаем правильное покрытие в обоих случаях. Для классов, использующих PowerMockRunner, мы сталкиваемся с проблемой покрытия, например, оно показывает 0 % покрытия в jacoco, но показывает правильное покрытие в eclemma.

PowerMockito version :1.7.1
Jdk 1.8
Jacoco:0.7.9

Я также пытался использовать правило PowerMockRunner, но это вызывает другую ошибку, связанную с проверкой stackframe, которую очень сложно исправить. Eclemma используется как плагин eclipse, а jacoco используется как плагин maven. Любой, кто столкнулся с этой проблемой и может ее исправить, может пролить свет на это. Я прошел через много ссылок, но ни одна из них не сработала для меня.

Немного полезной справки:

проблема покрытия PowerMock ECLEmma


person Pradeep    schedule 16.10.2017    source источник


Ответы (3)


PowerMock не работает с Jacoco

Jira за ошибку

Jacoco и powermock работают плохо, поэтому для охвата можно использовать автономную версию jacoco.

Я собрал пример

https://github.com/muhdkhokhar/powermock-jacoco-coverage

person Makky    schedule 16.10.2017
comment
Для некоторых классов powemockito он показывает % в jacoco. Тогда как же мы можем обобщить? Это не сработает?. Не возражаете. - person Pradeep; 16.10.2017

Автономная поддержка jacoco и powermock работает отлично, а инструментарий «на лету» не работает, и команда powermock работает над этим. Обратитесь к указанным ниже URL-адресам.

https://github.com/powermock/powermock/issues/727

https://github.com/powermock/powermock/wiki/Code-coverage-with-JaCoCo

person vijaya kumar gajula    schedule 21.03.2019

PowerMock может работать с JaCoCo

Моя конфигурация:

<powermock-version>2.0.9</powermock-version>
<jacoco.version>0.8.1</jacoco.version>
    
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>${jacoco.version}</version>
    <configuration>
        <excludes>
            <exclude>...</exclude>
        </excludes>
    </configuration>
    <executions>
        <execution>
            <id>prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

уведомление: 【важно!!!!】 Вы не можете использовать include. если вы используете include, покрытие всегда равно нулю. но вы можете использовать исключить.

person ccqccq    schedule 29.11.2020