You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Spring项目中Pitest因@Data导致覆盖率偏低的问题求助

解决Pitest中@Data自动生成方法拉低覆盖率的问题

方法1:配置Pitest排除自动生成的方法

Pitest支持通过配置过滤Lombok自动生成的方法,直接在构建配置里添加规则即可:

Maven配置示例

在pom.xml的pitest-maven-plugin中添加excludedMethods:

<plugin>
    <groupId>org.pitest</groupId>
    <artifactId>pitest-maven-plugin</artifactId>
    <version>1.15.0</version>
    <configuration>
        <excludedMethods>equals;hashCode;toString;get*;set*;with*</excludedMethods>
        <!-- 其他Pitest配置 -->
    </configuration>
</plugin>

Gradle配置示例

在build.gradle的pitest块中添加:

pitest {
    excludedMethods = ['equals', 'hashCode', 'toString', 'get.*', 'set.*', 'with.*']
    // 其他Pitest配置
}

通配符get.*会匹配所有getter方法,set.*匹配所有setter,覆盖@Data生成的全部标准方法。

方法2:使用Pitest-Lombok插件自动识别

有第三方插件可以自动识别Lombok生成的代码,无需手动配置方法规则:

Maven引入插件

<plugin>
    <groupId>org.pitest</groupId>
    <artifactId>pitest-maven-plugin</artifactId>
    <version>1.15.0</version>
    <dependencies>
        <dependency>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-lombok-plugin</artifactId>
            <version>0.2</version>
        </dependency>
    </dependencies>
</plugin>

Gradle引入插件

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

pitest {
    plugins = ['org.pitest:pitest-lombok-plugin:0.2']
}

插件会自动忽略Lombok生成的方法,不纳入覆盖率统计。

方法3:限定Pitest的统计范围

如果只关注业务逻辑代码的覆盖率,可以配置targetClasses指定仅统计服务、控制器等业务类,排除实体类:

Maven示例

<configuration>
    <targetClasses>
        <param>com.yourpackage.service.*</param>
        <param>com.yourpackage.controller.*</param>
    </targetClasses>
    <!-- 其他Pitest配置 -->
</configuration>

Gradle示例

pitest {
    targetClasses = ['com.yourpackage.service.*', 'com.yourpackage.controller.*']
}

这样Pitest就不会把实体类的自动生成方法算进覆盖率里。


内容的提问来源于stack exchange,提问作者Arthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:30:12