Отчет Cobertura не увеличивает покрытие кода с помощью Powermock

Я использую плагин Cobertura maven [версия 2.7], чтобы понять покрытие кода для моих тестов. Я использую PowerMock [версия 1.6.6] для макета зависимых объектов. Но когда я запускаю mvn cobertura:cobertura и проверяю отчет, охват остается прежним. Это прекрасно работает, когда я не использую насмешки. Это проблема совместимости? Я несколько раз пробовал mvn clean, чтобы убедиться, что отчет сгенерирован заново.

Вот мой pom.xml

<properties>
    <powermock.version>1.6.6</powermock.version>
</properties>
<build>
    <plugins>
        <!-- Cobertura plugin for code coverage -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <formats>
                    <format>html</format>
                    <format>xml</format>
                </formats>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</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>
</dependencies>

Любая помощь по этому вопросу приветствуется.

1 ответ

К сожалению, есть большая вероятность, что это невозможно. Я не знаю, как именно работает Cobertura, но я подозреваю, что он использует тот же подход, что и JaCoCo, и модифицирует байт-код с помощью Java Agent. Но PowerMock читает классы с диска при загрузке класса, поэтому все изменения теряются. Одно небольшое изменение в том, что Cobertura может изменять классы во время компиляции. Если да, то вы можете попробовать это.

Проект Cobertura выглядит заброшенным, поэтому я не вижу смысла тратить время на интеграцию с неподдерживаемым проектом. Я хотел бы сосредоточиться на интеграции с JaCoCo и обеспечивает поддержку инструментов на лету.

Другие вопросы по тегам