Питест не работает правильно

Я пытаюсь запустить pitest на некотором исходном коде. Теперь он жалуется, что не обнаружил никаких мутаций. Использование подробной инструкции не показало мне никаких проблем.

Смотрите следующий вывод:

    C:\Users\lukkezenm\workspace\pittest\pittest>gradlew pitest
:compileApiJava UP-TO-DATE
:processApiResources UP-TO-DATE
:apiClasses UP-TO-DATE
:compileImplJava UP-TO-DATE
:processImplResources UP-TO-DATE
:implClasses UP-TO-DATE
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:pitest
12:05:10 PM PIT >> FINE : Running report with ReportOptions [targetClasses=[^myo
rg\..*$], excludedMethods=[], excludedClasses=[], codePaths=[C:\Users\lukkezenm\
workspace\pittest\pittest\build\classes\main], reportDir=C:\Users\lukkezenm\work
space\pittest\pittest\build\reports\pitest, historyInputLocation=null, historyOu
tputLocation=null, sourceDirs=[C:\Users\lukkezenm\workspace\pittest\pittest\src\
main\resources, C:\Users\lukkezenm\workspace\pittest\pittest\src\main\java], cla
ssPathElements=[C:\Users\lukkezenm\.gradle\caches\modules-2\files-2.1\org.pitest
\pitest\1.1.6\3f0653443fe5ec2546c91140d3dcf007cd772dad\pitest-1.1.6.jar, C:\User
s\lukkezenm\workspace\pittest\pittest\build\classes\test, C:\Users\lukkezenm\wor
kspace\pittest\pittest\build\resources\test, C:\Users\lukkezenm\workspace\pittes
t\pittest\build\classes\main, C:\Users\lukkezenm\workspace\pittest\pittest\build
\resources\main, C:\Users\lukkezenm\workspace\pittest\pittest\build\classes\api,
 C:\Users\lukkezenm\workspace\pittest\pittest\build\resources\api, C:\Users\lukk
ezenm\workspace\pittest\pittest\build\classes\impl, C:\Users\lukkezenm\workspace
\pittest\pittest\build\resources\impl, C:\Users\lukkezenm\.gradle\caches\modules
-2\files-2.1\commons-codec\commons-codec\1.5\cf993e250ff71804754ec2734a16f23c0be
99f70\commons-codec-1.5.jar, C:\Users\lukkezenm\.gradle\caches\modules-2\files-2
.1\commons-lang\commons-lang\2.6\ce1edb914c94ebc388f086c6827e8bdeec71ac2\commons
-lang-2.6.jar, C:\Users\lukkezenm\.gradle\caches\modules-2\files-2.1\junit\junit
\4.9\1013627e3993319870863a020034004717505815\junit-4.9.jar, C:\Users\lukkezenm\
.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest-core\1.1\86034056225067
8d1a344907ac75754e259cdb14\hamcrest-core-1.1.jar], mutators=[], dependencyAnalys
isMaxDistance=-1, mutateStaticInitializers=false, jvmArgs=[], numberOfThreads=1,
 timeoutFactor=1.25, timeoutConstant=4000, targetTests=[], loggingClasses=[], ma
xMutationsPerClass=0, verbose=true, failWhenNoMutations=true, outputs=[HTML], gr
oupConfig=TestGroupConfig [excludedGroups=[], in                               c
ludedGroups=[]], mutationUnitSize=0, shouldCreateTimestampedReports=true, detect
InlinedCode=false, exportLineCoverage=false, mutationThreshold=0, coverageThresh
old=0, mutationEngine=gregor, javaExecutable=null, includeLaunchClasspath=false]

12:05:10 PM PIT >> FINE : System class path is C:\Users\lukkezenm\.gradle\caches
\modules-2\files-2.1\org.pitest\pitest-command-line\1.1.6\4abe3b86a567be1be40f15
82b6a56fdc333a574a\pitest-command-line-1.1.6.jar;C:\Users\lukkezenm\.gradle\cach
es\modules-2\files-2.1\org.pitest\pitest\1.1.6\3f0653443fe5ec2546c91140d3dcf007c
d772dad\pitest-1.1.6.jar;C:\Users\lukkezenm\.gradle\caches\modules-2\files-2.1\j
unit\junit\4.11\4e031bb61df09069aeb2bffb4019e7a5034a4ee0\junit-4.11.jar;C:\Users
\lukkezenm\.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest-core\1.3\42a
25dc3219429f0e5d060061f71acb49bf010a0\hamcrest-core-1.3.jar
12:05:10 PM PIT >> FINE : Maximum available memory is 247 mb
12:05:10 PM PIT >> FINE : using port 8092
12:05:10 PM PIT >> INFO : Sending 0 test classes to slave
12:05:10 PM PIT >> INFO : Sent tests to slave
12:05:10 PM PIT >> FINE : Coverage generator Slave exited ok
12:05:10 PM PIT >> INFO : Calculated coverage in 0 seconds.
12:05:10 PM PIT >> FINE : Used memory after coverage calculation 3 mb
12:05:10 PM PIT >> FINE : Free Memory after coverage calculation 11 mb
12:05:10 PM PIT >> INFO : Created  0 mutation test units
Exception in thread "main" org.pitest.help.PitHelpError: No mutations found. Thi
s probably means there is an issue with either the supplied classpath or filters
.
See http://pitest.org for more details.
        at org.pitest.mutationtest.tooling.MutationCoverage.checkMutationsFound(
MutationCoverage.java:271)
        at org.pitest.mutationtest.tooling.MutationCoverage.runReport(MutationCo
verage.java:138)
        at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:10
5)
        at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:46
)
        at org.pitest.mutationtest.commandline.MutationCoverageReport.runReport(
MutationCoverageReport.java:74)
        at org.pitest.mutationtest.commandline.MutationCoverageReport.main(Mutat
ionCoverageReport.java:45)
:pitest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pitest'.
> Process 'command 'C:\Program Files (x86)\Java\jdk1.7.0_79\bin\java.exe'' finis
hed with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 4.542 secs

C:\Users\lukkezenm\workspace\pittest\pittest>

Мой файл build.gradle:

apply plugin: "java"
apply plugin: "maven"
apply plugin: "info.solidsoft.pitest"

group = "myorg"
version = 1.0

repositories {
    mavenCentral()
}

sourceSets.all { set ->
    def jarTask = task("${set.name}Jar", type: Jar) {
        baseName = baseName + "-$set.name"
        from set.output
    }

    artifacts {
        archives jarTask
    }
}

sourceSets {
    api
    impl
}

buildscript {
    repositories {
        mavenCentral()
        //Needed only for SNAPSHOT versions
        //maven { url "http://oss.sonatype.org/content/repositories/snapshots/" }
    }
    dependencies {
        classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.1.6'
    }
}

dependencies {
    apiCompile 'commons-codec:commons-codec:1.5'

    implCompile sourceSets.api.output
    implCompile 'commons-lang:commons-lang:2.6'

    testCompile 'junit:junit:4.9'
    testCompile sourceSets.api.output
    testCompile sourceSets.impl.output
    runtime configurations.apiRuntime
    runtime configurations.implRuntime
}

jar {
    from sourceSets.api.output
    from sourceSets.impl.output
}

pitest
{
verbose="on"
}

2 ответа

Добавление следующего в файл build.gradle решило проблему:

pitest
{
println sourceSets.main
    targetClasses = ['d*']  //by default "${project.group}.*"
    targetTests  = ['*Test*']
}

Я просто провел много времени с тем же сообщением

Мутации не найдены. Это, вероятно, означает, что есть проблема с предоставленным classpath или фильтрами.

Моя проблема была проста: я создал несколько тестовых проектов в IntelliJ, используя Maven. Но у меня не было пакета. Я использовал пакет по умолчанию, и PITest каждый раз терпел неудачу. В PITest есть плагин, который может работать только с пакетом по умолчанию, если вы укажете класс и тестовые классы. Но во всей документации сказано, что она должна работать по умолчанию. Подробный вывод даже показал, что PITest находил правильные папки проекта, но все равно не работал. Генри Коул был даже достаточно хорош (разработчик PITest), чтобы посмотреть на мой файл POM.xml и подтвердить, что он выглядел хорошо.

Таким образом, PITest прекрасно работает, если вы поместите свой Java-код в пакет.

Другие вопросы по тегам