java - 没有发现突变 PitTest Maven
问题描述
第一次尝试使用pitTest和maven,
使用 IntelliJ 理念。
对于以下 pom.xml 片段:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.4.9</version>
<configuration>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>0.12</version>
</dependency>
</dependencies>
</plugin>
</plugins>
我得到以下堆栈跟踪:
[INFO]
[INFO] --- pitest-maven:1.4.9:mutationCoverage (default-cli) @ Junit_Test ---
[INFO] Found plugin : Default csv report plugin
[INFO] Found plugin : Default xml report plugin
[INFO] Found plugin : Default html report plugin
[INFO] Found plugin : Static initializer code detector plugin
[INFO] Found plugin : Static initializer filter plugin
[INFO] Found plugin : Excluded annotations plugin
[INFO] Found plugin : Inlined finally block filter plugin
[INFO] Found plugin : Try with resources filter
[INFO] Found plugin : Implicit null check filter
[INFO] Found plugin : For each loop filter
[INFO] Found plugin : Logging calls filter
[INFO] Found plugin : Infinite for loop filter
[INFO] Found plugin : Long running iterator loop filter
[INFO] Found plugin : For loop counter filter
[INFO] Found plugin : Kotlin junk mutations filter
[INFO] Found plugin : Max mutations per class limit
[INFO] Found plugin : Equals shortcut equivalent mutant filter
[INFO] Found plugin : Trivial return vals equivalence filter
[INFO] Found plugin : Mutant export plugin
[INFO] Found shared classpath plugin : Default mutation engine
[INFO] Found shared classpath plugin : JUnit 5 test framework support
[INFO] Found shared classpath plugin : JUnit plugin
[INFO] Found shared classpath plugin : TestNG plugin
[INFO] Adding org.pitest:pitest-junit5-plugin to SUT classpath
[INFO] Adding org.pitest:pitest to SUT classpath
[INFO] Mutating from C:\Users\Lenovo\IdeaProjects\Junit_Test_2\target\classes
[INFO] Defaulting target classes to match packages in build directory
4:57:36 AM PIT >> INFO : ---------------------------------------------------------------------------
4:57:36 AM PIT >> INFO : Enabled (+) and disabled (-) features.
4:57:36 AM PIT >> INFO : -----------------------------------------
4:57:36 AM PIT >> INFO : +FFBLOCK Filters mutations in code duplicated by finally block inlining
4:57:36 AM PIT >> INFO : +FSTATI Filters mutations in static initializers and code called only from them
4:57:36 AM PIT >> INFO : +FSEQUIVEQUALS Filters equivalent mutations that affect only performance in short cutting equals methods
4:57:36 AM PIT >> INFO : +FFEACH Filters mutations in compiler generated code that implements for each loops
4:57:36 AM PIT >> INFO : +FINFINC Filters mutations to increments that may cause infinite loops
4:57:36 AM PIT >> INFO : +FFLOOP Filters any mutations to increments in for loops as they may cause timeouts
4:57:36 AM PIT >> INFO : +FRETEQUIV Filters return vals mutants with bytecode equivalent to the unmutated class
4:57:36 AM PIT >> INFO : +FINULL Filters mutations in compiler generated code that checks for null by calling getClass
4:57:36 AM PIT >> INFO : +FTRYWR Filters mutations in code generated for try with resources statements
4:57:36 AM PIT >> INFO : +FKOTLIN Filters out junk mutations in bytecode created by compiler for kotlin language features
4:57:36 AM PIT >> INFO : +FSTATINIT Filters mutations in static initializers and code called only from them
4:57:36 AM PIT >> INFO : +FLOGCALL Filters mutations in code that makes calls to logging frameworks
4:57:36 AM PIT >> INFO : +FINFIT Filters mutations that may cause infinite loops by removing calls to iterator.next
4:57:36 AM PIT >> INFO : +FANN Filters mutations in classes and methods with matching annotations of class or runtime retention
4:57:36 AM PIT >> INFO : [annotation] Annotation to avoid (full package name not required)
4:57:36 AM PIT >> INFO : -CLASSLIMIT Limits the maximum number of mutations per class
4:57:36 AM PIT >> INFO : [limit] Integer value for maximum mutations to create per class
4:57:36 AM PIT >> INFO : -EXPORT Exports mutants bytecode and other details to disk
4:57:36 AM PIT >> INFO : ---------------------------------------------------------------------------
4:57:36 AM PIT >> FINE : Running report with ReportOptions [targetClasses=[.*], excludedMethods=[], excludedClasses=[], excludedTestClasses=[], codePaths=[C:\Users\Lenovo\IdeaProjects\Junit_Test_2\target\classes], reportDir=C:\Users\Lenovo\IdeaProjects\Junit_Test_2\target\pit-reports, historyInputLocation=null, historyOutputLocation=null, sourceDirs=[C:\Users\Lenovo\IdeaProjects\Junit_Test_2\src\main\java, C:\Users\Lenovo\IdeaProjects\Junit_Test_2\src\test\java], classPathElements=[C:\Users\Lenovo\IdeaProjects\Junit_Test_2\target\test-classes, C:\Users\Lenovo\IdeaProjects\Junit_Test_2\target\classes, C:\Users\Lenovo\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.4.2\junit-jupiter-api-5.4.2.jar, C:\Users\Lenovo\.m2\repository\org\apiguardian\apiguardian-api\1.0.0\apiguardian-api-1.0.0.jar, C:\Users\Lenovo\.m2\repository\org\opentest4j\opentest4j\1.1.1\opentest4j-1.1.1.jar, C:\Users\Lenovo\.m2\repository\org\junit\platform\junit-platform-commons\1.4.2\junit-platform-commons-1.4.2.jar, C:\Users\Lenovo\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.4.2\junit-jupiter-engine-5.4.2.jar, C:\Users\Lenovo\.m2\repository\org\junit\platform\junit-platform-engine\1.4.2\junit-platform-engine-1.4.2.jar, C:\Users\Lenovo\.m2\repository\org\pitest\pitest-junit5-plugin\0.12\pitest-junit5-plugin-0.12.jar, C:\Users\Lenovo\.m2\repository\org\pitest\pitest\1.4.9\pitest-1.4.9.jar], mutators=[], features=[], dependencyAnalysisMaxDistance=-1, jvmArgs=[-Djava.awt.headless=true], numberOfThreads=1, timeoutFactor=1.25, timeoutConstant=3000, targetTests=[], loggingClasses=[], maxMutationsPerClass=0, verbose=true, failWhenNoMutations=true, outputs=[HTML], groupConfig=TestGroupConfig [excludedGroups=[], includedGroups=[]], fullMutationMatrix=false, mutationUnitSize=0, shouldCreateTimestampedReports=true, detectInlinedCode=true, exportLineCoverage=false, mutationThreshold=0, coverageThreshold=0, mutationEngine=gregor, javaExecutable=null, includeLaunchClasspath=true, properties={}, maxSurvivors=0, excludedRunners=[], includedTestMethods=[], testPlugin=junit5, useClasspathJar=false, skipFailingTests=false]
4:57:36 AM PIT >> FINE : System class path is C:\Program Files\JetBrains\IntelliJ IDEA Educational Edition 2020.2.1\plugins\maven\lib\maven3\boot\plexus-classworlds-2.6.0.jar;C:\Program Files\JetBrains\IntelliJ IDEA Educational Edition 2020.2.1\plugins\maven\lib\maven3\boot\plexus-classworlds.license;C:\Program Files\JetBrains\IntelliJ IDEA Educational Edition 2020.2.1\lib\idea_rt.jar
4:57:36 AM PIT >> FINE : Maximum available memory is 1776 mb
4:57:36 AM PIT >> FINE : MINION : Installing PIT agent
4:57:36 AM PIT >> INFO : Sending 0 test classes to minion
4:57:36 AM PIT >> INFO : Sent tests to minion
4:57:36 AM PIT >> FINE : Coverage generator Minion exited ok
4:57:36 AM PIT >> INFO : Calculated coverage in 0 seconds.
4:57:36 AM PIT >> FINE : Used memory after coverage calculation 42 mb
4:57:36 AM PIT >> FINE : Free Memory after coverage calculation 110 mb
4:57:36 AM PIT >> INFO : Created 0 mutation test units
带有以下错误消息:
Failed to execute goal org.pitest:pitest-maven:1.4.9:mutationCoverage (default-cli) on project Junit_Test: Execution default-cli of goal org.pitest:pitest-maven:1.4.9:mutationCoverage failed: No mutations found. This probably means there is an issue with either the supplied classpath or filters.
我努力了:
-> 添加 targetClasses 和 targetTests 配置参数(堆栈跟踪中源目录中的参数)
-> 添加 .* 作为 targetClasses 和 targetTests
两者都给出相同的错误。
类的 .java 文件位于 project_dir/src/main/java 测试类的 .java 文件位于 project_dir/src/test/java
解决方案
推荐阅读
- azure-language-understanding - 使用意图映射 LUIS 话语
- google-bigquery - Java - 一次插入一行到谷歌大查询?
- docker - 如何使用 docker-compose 将环境变量设置到 docker 容器中
- php - yii2 从日期时间选择时间
- reactjs - Immutable.js 不呈现列表数据
- python - 从python dict中的用户输入获取键值
- ms-access - 访问表格 - 关系
- css - SVG 不尊重背景大小 100% 100%
- r - R - 将 Excel 工作簿拆分为 csv 文件
- r - dplyr NSE 中的多个列名