7

这似乎是一个很常见的问题,我个人至少偶然发现了几次。

一些主要原因是:

然而,今天我偶然发现了一个新的 0 测试案例,我很难解决。让我们考虑这个项目:https ://github.com/bonnyfone/vectalign 。
这是一个小项目,仅包含一个测试类:

src
 |
 +- main
 |   |
 |   ...
 |
 +- test
     |
     +- java
          |
          +- VectAlignTest.java

我添加了pitest到pom.xml

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

我运行命令mvn clean test org.pitest:pitest-maven:mutationCoverage。虽然测试运行得很好,但由于某种原因,pitest 无法找到它们:

12:23:16 PM PIT >> INFO : MINION : 12:23:16 PM PIT >> INFO : Found  0 tests
...
================================================================================
- Statistics
================================================================================
>> Generated 910 mutations Killed 0 (0%)
>> Ran 0 tests (0 tests per mutation)

你可以在pom.xml这里找到完整的:https
://pastebin.com/F28ZpcMk 这里是完整的输出mvn clean test org.pitest:pitest-maven:mutationCoveragehttps ://pastebin.com/tWHgq43a

现在我的问题是,在这种特殊情况下出了什么问题?Pitest 如何确定哪些是测试类?

您的帮助将不胜感激:)

4

2 回答 2

2

PITest 没有找到我的类或测试类,因为我的包中没有它们。一旦我把它们放在一个包里,一切都很好。我怀疑您也可以手动指定课程和测试课程的位置。

在(现已删除)链接问题中引用该答案:

我只是花了很多时间在同一条消息上

未发现突变。这可能意味着提供的类路径或过滤器存在问题。

我的问题很简单:我使用 Maven 在 IntelliJ 中创建了几个测试项目。但是我没有包裹。我使用的是默认包,PITest 每次都失败。如果您指定类和测试类,PITest 有一个插件可能仅适用于默认包。但是所有文档都说它应该默认工作。详细的输出甚至显示 PITest 正在查找正确的项目文件夹,但它仍然无法正常工作。Henry Cole(PITest 的开发者)甚至可以很好地查看我的 POM.xml 文件并确认它看起来不错。

总之,如果您将 Java 代码放在一个包中,PITest 会非常有效。

于 2018-04-04T01:35:00.707 回答
0

我面临着同样的问题。对我来说,指定确切的测试包有帮助。在你的情况下,也许你可以添加:

<configuration>
    <targetTests>
      <param>VectAlignTest*</param>
    </targetTests>
</configuration>

但是,当然,这是一个相当肮脏的解决方法。也许有人知道问题的根本原因。

于 2018-03-13T18:46:32.370 回答