Тест покрытия кода Cobertura на плагине Maven

Я пытаюсь создать отчет о покрытии кода для простого плагина Maven, который я разработал. Cobertura правильно генерирует отчет с тремя классами в моем проекте, но сообщает о 0% охвате кода, даже если тесты выполнены успешно. Я запустил его в режиме отладки, и Cobertura не сообщила об ошибках или следах стека.

Моя конфигурация в файле POM довольно проста:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>

    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-artifact</artifactId>
        <version>3.0.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-compat</artifactId>
        <version>3.0.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>3.0.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
    </dependency> 

    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-core</artifactId>
        <version>3.0.5</version>
    </dependency>  

    <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>3.1</version>
    </dependency>
    <dependency>
        <!-- version 2.1 uses sonatype aether. anything after 2.1 uses eclipse aether. -->
        <groupId>org.apache.maven.plugin-testing</groupId>
        <artifactId>maven-plugin-testing-harness</artifactId>
        <scope>test</scope>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.twdata.maven</groupId>
        <artifactId>mojo-executor-maven-plugin</artifactId>
        <version>2.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <type>maven-plugin</type>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
            <executions>
                <execution>
                    <id>test-custom-plugin</id>
                    <phase>test</phase>
                    <goals> 
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <forkMode>never</forkMode>
                        <forkCount>0</forkCount>
                        <reuseForks>true</reuseForks>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <goalPrefix>MyCustomPlugin</goalPrefix>
            </configuration>
            <executions>
                <execution>
                    <id>default-descriptor</id>
                    <goals>
                        <goal>descriptor</goal>
                    </goals>
                    <phase>process-classes</phase>
                </execution>
                <execution>
                    <id>help-descriptor</id>
                    <goals>
                        <goal>helpmojo</goal>
                    </goals>
                    <phase>process-classes</phase>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.5.2</version>
        </plugin>
    </plugins>
</build>    

Cobertura работает над всеми другими моими проектами (пока), есть ли какая-то причина, по которой она не сможет сообщить о покрытии для проекта плагина Maven?

1 ответ

Решение

Кажется, проблема была с моей верной конфигурацией. Я изменил это на

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
            <executions>
                <execution>
                    <id>test-custom-plugin</id>
                    <phase>test</phase>
                    <goals> 
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <forkCount>1</forkCount>
                        <reuseForks>true</reuseForks>
                    </configuration>
                </execution>
            </executions>
        </plugin>

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

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