Pitest排除方法Maven配置

8

我正在尝试从变异的I/O方法中排除PIT,例如“close”和“flush”。以下是我的Maven配置:

<plugin>
    <groupId>org.pitest</groupId>
    <artifactId>pitest-maven</artifactId>
    <version>1.1.3</version>
    <configuration>
        <targetClasses>
            <param>my.package.*.*</param>
        </targetClasses>
        <targetTests>                   
            <param>my.package.*.*</param>
        </targetTests>
        <excludedClasses>
            <param>my.generated.*</param>
            <param>**.*IT</param>                                
        </excludedClasses>
        <excludedMethods>
            <param>close</param>
            <param>flush</param>
        </excludedMethods>
        <reportSets>
            <reportSet>
                <reports>
                    <report>report</report>
                </reports>
            </reportSet>
        </reportSets>
    </configuration>
</plugin>

excludedClasses似乎是可以工作的,但是excludedMethods却不行。例如,PIT的结果仍然表明删除"close"和"flush"调用对测试结果没有影响。

问题:我错过了什么吗?

1个回答

5

排除方法是用于避免在匹配提供的名称列表中的方法内创建突变体。

我认为您希望停止创建删除对close和flush方法调用的突变体。这可以通过使用avoidCallsTo参数来实现。


谢谢,这正是我想要实现的。然而,当我尝试以下代码时: <avoidCallsTo> <avoidCallsTo>java.util.Scanner.close</avoidCallsTo <avoidCallsTo>java.util.logging</avoidCallsTo> </avoidCallsTo> 日志条目可以工作,但扫描器条目却不能。有什么想法吗? - q3769
在避免调用时,是否将 closeflush 等方法添加到其中是最佳实践,还是我们应该以某种方式更改测试以在未被调用时失败? - ArtOfWarfare
@ArtOfWarfare 这个问题很难回答,取决于你的代码库。如果测试确认 close 被调用很重要,那么使用 avoidCallsTo。如果不是,那就不要加。其实没有一种单一的“最佳实践”适用于所有情况,每种情况都是不同的。 - henry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,