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
相关产品推荐
相关产品推荐

