3

我的 Maven 和 Pitest 配置有问题。

Pitest世代突变是好的,但他看不到我的测试类..

如果您有任何解决方案:D


我有这样的主要来源/src/main/java/com.plugin..... .java

我有这样的测试源 /src/test/java/com.plugin.... .java


pom.xml 配置:

<plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>1.1.9</version>
            <configuration>
                <targetClasses>
                    <param>com.plugin.business.centre*</param>
                </targetClasses>
                <targetTests>
                    <param> com.plugin.business.centre*</param>
                </targetTests>
            </configuration>
    </plugin>

在 <targetTests> .. 他只知道我的带有自动完成功能的源类,而不是我的测试类。


[INFO] --- pitest-maven:1.1.9:mutationCoverage (default-cli) @ Polux ---
[INFO] Found plugin : Default csv report plugin
[INFO] Found plugin : Default xml report plugin
[INFO] Found plugin : Default html report plugin
[INFO] Found plugin : Default limit mutations plugin
[INFO] Found shared classpath plugin : Default mutation engine
[INFO] Adding org.pitest:pitest to SUT classpath
[INFO] Mutating from /Users/Mods/Documents/*****/target/classes
08:35:36 PIT >> INFO : Verbose logging is disabled. If you encounter an problem please enable it before reporting an issue.
08:35:36 PIT >> INFO : MINION : objc[677]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be us
08:35:36 PIT >> INFO : MINION : ed. Which one is undefined.

08:35:37 PIT >> INFO : Sending 0 test classes to minion
08:35:37 PIT >> INFO : Sent tests to minion
08:35:37 PIT >> INFO : MINION : 08:35:37 PIT >> INFO : Checking environment

08:35:37 PIT >> INFO : MINION : 08:35:37 PIT >> INFO : Found  0 tests

08:35:37 PIT >> INFO : MINION : 08:35:37 PIT >> INFO : Dependency analysis reduced number of potential tests by 0

08:35:37 PIT >> INFO : MINION : 08:35:37 PIT >> INFO : 0 tests received

08:35:37 PIT >> INFO : Calculated coverage in 0 seconds.
08:35:37 PIT >> INFO : Created  20 mutation test units
4

5 回答 5

7

我需要将 junit5 插件添加为依赖项(因为我使用的是 JUnit 5)。

<plugin>
    <groupId>org.pitest</groupId>
    <artifactId>pitest-maven</artifactId>
    <version>1.4.5</version>
    <dependencies>
        <dependency>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-junit5-plugin</artifactId>
            <version>0.8</version>
        </dependency>
    </dependencies>
    <configuration>
        ...
    </configuration>
</plugin>
于 2019-03-01T19:26:00.123 回答
6

对于遇到同样问题的人来说:

我遇到了同样的问题,我通过mvn test在 Pitest 之前运行来解决它。

Pitest 不知何故需要这些测试至少执行一次才能找到它们。

于 2016-07-22T19:10:18.957 回答
1

当我们从 Junit4 迁移到 Junit5 时,它不起作用。没有直接对 Junit5 的支持。解决方案是使用 Pitest 的插件进行 Junit5 参考https://github.com/pitest/pitest-junit5-plugin

plugins {
    id 'java'
    id 'info.solidsoft.pitest' version '1.5.1'
}

pitest {
    //adds dependency to org.pitest:pitest-junit5-plugin and sets "testPlugin" to "junit5"
    junit5PluginVersion = '0.12'
    // ...
}
于 2020-11-02T12:21:07.593 回答
0

我的测试没有被检测到,因为我使用了 Java 的内置assert,例如:

assert 1 + 2 == 3;

当我将其更改为 JUnit 时:

import static org.junit.Assert.assertEquals;

assertEquals(1 + 2, 3);

PITest 按预期工作。我没有深入挖掘为什么它会以这种方式工作。

于 2020-09-15T10:22:48.583 回答
-1

Pitest无法自动找到testPlugin,手动设置:

对于行家:

<testPlugin>
    <value>junit5</value>
</testPlugin>

对于毕业:

pitest {
    testPlugin = "junit5" //or another test plugin
    ...
}
于 2018-12-09T04:45:56.590 回答