Jacoco не обнаруживает файлы модульных тестов с Gradle в проекте java - PullRequest
0 голосов
/ 06 февраля 2020

Я настраиваю отчеты о модульных тестах Jacoco (версия 0.8.3) для конкретного модуля c в проекте Gradle (версия 6.0.1). В настоящее время у меня есть базовая c java структура проекта, где у меня есть в данном модуле репозитории sr c и src / main, src / test с файлами основного кода и модульными тестами.

Это моя конфигурация в файле c build.gradle для данного модуля:

  apply plugin: 'java'
    apply plugin: 'jacoco'

    jacoco {
      toolVersion = "0.8.3"
    }
    jacocoTestReport {
      reports {
        xml.enabled true
        html.enabled true

      }
    }
    jacocoTestCoverageVerification {
      violationRules {
        rule {
          limit {
            counter = 'LINE'
            value = 'COVEREDRATIO'
            value = 'COVEREDRATIO'
            minimum = 1.0
          }
        }
      }
    }
    sonarqube {
      properties {
        property "sonar.coverage.jacoco.xmlReportPaths", "build/customJacocoReportDir/test/jacocoTestReport.xml"
        property "sonar.java.binaries", "build/classes/java/main"
        property "sonar.java.test.binaries", "build/classes/java/test"
        property "sonar.sources", "src/main"
        property "sonar.tests", "src/test"
      }
    }

Однако после запуска jacocoTestReport генерируется файл xml с результатами теста, но он показывает 0 покрытие модульных тестов, даже если у меня есть модульные тесты, охватывающие мои занятия. Классы модульных тестов также включены в сгенерированный индексный файл. html.

Этот проект имеет автономную конфигурацию Gradle для модульных тестов, я думаю, что проблема может быть, я не смог ее найти. Файл junit-test.gradle:

sourceSets.test.output.resourcesDir = file('build/classes/java/test/')

configurations {
  testCompile {
    exclude group: 'junit'
    exclude group: 'org.aspectj'
    exclude group: 'org.hamcrest'
    exclude module: 'jsonassert'
    exclude module: 'jsr305'
  }
}

dependencies {
  testImplementation(
    // Junit 5
    'org.junit.jupiter:junit-jupiter-api',
    'org.junit.jupiter:junit-jupiter-params',
  )
testRuntimeOnly(
    'org.junit.jupiter:junit-jupiter-engine',
  )
}
tasks.named('compileTestJava').configure {
  options.encoding = 'UTF-8'
  doFirst {
    moduleOptions {
      addReads = [(project.moduleName): 'org.junit.jupiter.api']
    }
  }
}
tasks.named('test').configure { Test test ->
test.useJUnitPlatform {
    includeEngines 'junit-jupiter'
//    scanForTestClasses false
    include "***/**/*Tests.class"
    include "****/**/*TestFactory.class"
    filter {
      failOnNoMatchingTests false
    }

  }
test.testLogging {
  events "passed", "skipped", "failed"
 exceptionFormat TestExceptionFormat.FULL
}
test.reports {
  html.enabled = true
}
doFirst {
    moduleOptions {
      addReads = [(project.moduleName): 'org.junit.jupiter.api']
      addOpens = ['java.base/java.lang': 'spring.core']
    }
    def testJvmArgs = [
      '-ea',
      '-Dfile.encoding=utf-8',
      '-Dsun.jnu.encoding=utf-8',
      '-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager',
      '-Duser.country=**',
      '-Duser.language=**',
      '-Duser.timezone=***,

    ]
    configurations.agent.files.each {
      testJvmArgs.add 1, "-javaagent:$it.path"
    }
    test.jvmArgs testJvmArgs
  }

}
...