My PITEST won't run. Coverage generation minion exited abnormally. I need help to configure my pom.xml properly
Asked Answered
S

5

15

When running mvn org.pitest:pitest-maven:mutationCoverage, I get the error as follows ( Environment: Windows 10, Maven 3.6.1, Java 11, junit-jupiter 5.4.1, pitest 1.4.7)

[ERROR] Failed to execute goal org.pitest:pitest-maven:1.4.7:mutationCoverage (default-cli) on project hello-strange-world: Execution default-cli of goal org.pitest:pitest-maven:1.4.7:mutationCoverage failed: Coverage generation minion exited abnormally. Please check the classpath.
[ERROR]
[ERROR] Please copy and paste the information and the complete stacktrace below when reporting an issue
[ERROR] VM : Java HotSpot(TM) 64-Bit Server VM
[ERROR] Vendor : Oracle Corporation
[ERROR] Version : 11.0.2+9-LTS
[ERROR] Uptime : 4936
[ERROR] Input ->
[ERROR]  1 : -Dclassworlds.conf=C:\DEVRES\apache-maven-3.6.1\bin\..\bin\m2.conf
[ERROR]  2 : -Dmaven.home=C:\DEVRES\apache-maven-3.6.1\bin\..
[ERROR]  3 : -Dlibrary.jansi.path=C:\DEVRES\apache-maven-3.6.1\bin\..\lib\jansi-native
[ERROR]  4 : -Dmaven.multiModuleProjectDirectory=D:\DATA02\DEVELOPMENT\hellostrangeworld
[ERROR] BootClassPathSupported : false
[ERROR]
[ERROR]
[ERROR] Please copy and paste the information and the complete stacktrace below when reporting an issue
[ERROR] VM : Java HotSpot(TM) 64-Bit Server VM
[ERROR] Vendor : Oracle Corporation
[ERROR] Version : 11.0.2+9-LTS
[ERROR] Uptime : 4936
[ERROR] Input ->
[ERROR]  1 : -Dclassworlds.conf=C:\DEVRES\apache-maven-3.6.1\bin\..\bin\m2.conf
[ERROR]  2 : -Dmaven.home=C:\DEVRES\apache-maven-3.6.1\bin\..
[ERROR]  3 : -Dlibrary.jansi.path=C:\DEVRES\apache-maven-3.6.1\bin\..\lib\jansi-native
[ERROR]  4 : -Dmaven.multiModuleProjectDirectory=D:\DATA02\DEVELOPMENT\hellostrangeworld
[ERROR] BootClassPathSupported : false
[ERROR]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Ref.: https://github.com/ooroor/hellostrangeworld/blob/make_pitest_work/pom.xml

Spallation answered 14/4, 2019 at 21:5 Comment(0)
G
6

JUnit seems to be missing from dependencies, so try adding the following to pom.xml:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
Greatcoat answered 14/4, 2019 at 21:33 Comment(2)
But one of the goals is to upgrade from junit to jupiter (4 to 5).Philbert
Anyway, I tried it, even if I did not quite understand why. Well, errors disappeared! So thanks a lot! But: Can you explain me a little here? I thought that either I use 4, OR (exclusicvely) I use 5. Not both. What's going on here?Philbert
T
8

I fixed JUnit 5 and "minion exited abnormally" issue by following Mr. Mkyong's example at Maven – PITest mutation testing example.

Scroll down to pom.xml section, there is a sneaky pitest-junit5-plugin dependency defined in build section of pom file:

<dependencies>
    <dependency>
        <groupId>org.pitest</groupId>
        <artifactId>pitest-junit5-plugin</artifactId>
        <version>0.8</version>
    </dependency>
</dependencies>

This is my working pom.xml for jacoco code coverage and pit-mutation in maven test phase. If you only interested in pit part feel free to remove entire jacoco plugin section from build tags.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>code</groupId>
    <artifactId>scans</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.5.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M1</version>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.4</version>
                <executions>

                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>

                    <!--attach execution to maven's test phase-->
                    <execution>
                        <id>report</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>

                    <!-- fail build if line coverage is lover then defined threshold -->
                    <execution>
                        <id>jacoco-check</id>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <rule>
                                    <element>PACKAGE</element>
                                    <limits>
                                        <limit>
                                            <counter>LINE</counter>
                                            <value>COVEREDRATIO</value>
                                            <minimum>0.9</minimum>
                                        </limit>
                                    </limits>
                                </rule>
                            </rules>
                        </configuration>
                    </execution>

                </executions>
            </plugin>


            <plugin>
                <groupId>org.pitest</groupId>
                <artifactId>pitest-maven</artifactId>
                <version>1.4.10</version>

                <!--attach execution to maven's test phase-->
                <executions>
                    <execution>
                        <id>pit-report</id>
                        <phase>test</phase>
                        <goals>
                            <goal>mutationCoverage</goal>
                        </goals>
                    </execution>
                </executions>

                <!--allows to work with JUnit 5-->
                <dependencies>
                    <dependency>
                        <groupId>org.pitest</groupId>
                        <artifactId>pitest-junit5-plugin</artifactId>
                        <version>0.9</version>
                    </dependency>
                </dependencies>

                <!--optional-->
                <configuration>
                    <targetClasses>
                        <param>code.scans*</param>
                    </targetClasses>
                    <targetTests>
                        <param>code.scans*</param>
                    </targetTests>
                </configuration>

            </plugin>

        </plugins>
    </build>

</project>

This is my environment details:

Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T02:58:13-05:00)
Maven home: C:\DEV\apache-maven-3.5.2\bin\..
Java version: 1.8.0_221, vendor: Oracle Corporation
Java home: C:\Progra~1\Java\jdk1.8.0_221\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
Tenney answered 4/10, 2019 at 0:59 Comment(0)
G
6

JUnit seems to be missing from dependencies, so try adding the following to pom.xml:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
Greatcoat answered 14/4, 2019 at 21:33 Comment(2)
But one of the goals is to upgrade from junit to jupiter (4 to 5).Philbert
Anyway, I tried it, even if I did not quite understand why. Well, errors disappeared! So thanks a lot! But: Can you explain me a little here? I thought that either I use 4, OR (exclusicvely) I use 5. Not both. What's going on here?Philbert
J
1

My setup is this:


        <profile>
            <id>pitest</id>
            <dependencies>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.pitest</groupId>
                        <artifactId>pitest-maven</artifactId>
                        <configuration>
                            <targetClasses>
                                <param>pl.marcinchwedczuk.rfid*</param>
                            </targetClasses>
                            <targetTests>
                                <param>pl.marcinchwedczuk.rfid*Test</param>
                            </targetTests>
                            <avoidCallsTo>
                                <avoidCallsTo>org.slf4j</avoidCallsTo>
                            </avoidCallsTo>
                        </configuration>
                        <executions>
                            <execution>
                                <id>run-pitest</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>mutationCoverage</goal>
                                </goals>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.pitest</groupId>
                                <artifactId>pitest-junit5-plugin</artifactId>
                                <version>${maven-pitest-junit.plugin.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
Jilly answered 1/6, 2021 at 17:40 Comment(0)
C
1

To add my two cents here, I used JUnit 5 with the plugin as documented. But, I had a JUnit dependency on junit-jupiter-api and I should've been using junit-jupiter-engine.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.7.2</version>
    <scope>test</scope>
</dependency>
Cabana answered 16/9, 2021 at 14:11 Comment(0)
S
0

In my case I got this error because junit vintage engine was included in the pom and no test using Junit 4 were found so I just excluded junit-vintage from spring-boot. I've also excluded junit and mockito core because I'm setting manually those dependencies with a fixed version.

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
Strained answered 2/12, 2020 at 8:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.