Моя структура каталогов:
|/src | |/main | | |/com.episo | | | |/contracts | | | | |/clip | | | | |/security | | | |/repositories | | | | |/memory | |/test | | |/com.episo | | | |/contracts | | | | |/clip | | | | |/security | | | |/repositories | | | | |/memory
И вот соответствующий раздел моего build.gradle:
repositories { mavenCentral() maven { url "http://dl.bintray.com/jetbrains/spek" } } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile 'com.google.guava:guava:19.0' testCompile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" testCompile 'com.google.guava:guava:19.0' testCompile group: 'junit', name: 'junit', version: '4.12' testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testCompile 'org.junit.platform:junit-platform-runner:1.0.0-M4' testCompile 'org.junit.platform:junit-platform-console:1.0.0-M4' testCompile ('org.jetbrains.spek:spek-api:1.1.2') { exclude group: 'org.jetbrains.kotlin' } testRuntime ('org.jetbrains.spek:spek-junit-platform-engine:1.1.2') { exclude group: 'org.junit.platform' exclude group: 'org.jetbrains.kotlin' } } // JaCoCo coverage rules jacocoTestCoverageVerification { violationRules { rule { limit { minimum = 0.5 } } rule { element = 'PACKAGE' limit { counter = 'CLASS' value = 'COVEREDRATIO' minimum = 0.7 } } } } junitPlatform { filters { engines { include 'spek' } } enableStandardTestTask true }
Мой код написан в Kotlin, и я использую Spek для написания модульных тестов. Когда я запускаю свои тесты через графический интерфейс IntelliJ, правильно сообщается покрытие кода. Однако, когда я запускаю gradle jacocoTestCoverageVerification
, я получаю следующий результат:
* What went wrong: Execution failed for task ':jacocoTestCoverageVerification'. > Rule violated for bundle episo-contracts: instructions covered ratio is 0.2, but expected minimum is 0.5 Rule violated for package com.episo.contracts: classes covered ratio is 0.0, but expected minimum is 0.7 Rule violated for package com.episo.repositories: classes covered ratio is 0.0, but expected minimum is 0.7 Rule violated for package com.episo.contracts.security: classes covered ratio is 0.0, but expected minimum is 0.7
Очевидно, что коэффициент охвата 0.0 для пакетов неверен; это означало бы, что я не написал никаких тестов, что совсем не так.
Может быть, что-то о моей структуре каталогов, которая заставляет Jacoco не забирать, какие тесты совпадают с какими классами?