如何将Kotlin source的测试报告上传到工作服?

How to upload test reports of Kotlin sources to Coveralls?


如何将Kotlin source的测试报告上传到工作服? 已获得2个解决方法 2020-08-19 14:49:36 gradle

我想在我的Travis构建完成后自动将我的Jacoco测试报告上传到工作服.它适用于Java,但如何为Kotlin配置它?

错误消息

我可以在本地和Travis上生成Jacoco测试报告,但是当Travis试图提交给工作服时,它失败了

> Task :coveralls
No source file found on the project: "kotlin-template-project"
With coverage file: /home/travis/build/myname/myreponame/build/reports/jacoco/test/jacocoTestReport.xml

Google将我链接到Gradle插件实现它显示了它抛出这条消息的地方,它告诉我 (我认为) 找到了Jacoco报告文件,但没有找到工作服显然需要的源文件.

我尝试的

因此,我尝试通过所有这些方式将工作服任务指向我的源文件:

coveralls {
    sourceDirs += allprojects.sourceSets.main.allSource.srcDirs.flatten()
    sourceDirs += files(sourceSets.main.kotlin.srcDirs).files.absolutePath
    project.extensions.coveralls.sourceDirs += project.sourceSets.main.kotlin.srcDirs
    sourceDirs += ['src/main/kotlin']
    jacocoReportPath = 'build/reports/jacoco/test/jacocoTestReport.xml'
    sourceDirs += ['src/test/kotlin']
    sourceDirs += ["${projectDir}/src/main/kotlin"]
}

我还尝试将 sourceSets project.sourceSets.main 添加到 jacocoTestReport 任务.

项目设置

我的最小 build.gradle 文件:

plugins {

    id 'org.jetbrains.kotlin.jvm' version '1.2.50'
    id 'java' // Required by at least JUnit.

    // Test coverage
    id 'jacoco'

    // Upload jacoco coverage reports to coveralls
    id 'com.github.kt3k.coveralls'  version '2.8.2'
}

dependencies {
    compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'

    // JUnit 5
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.2.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.2.0'
    testRuntime 'org.junit.platform:junit-platform-console:1.2.0'

    // Kotlintest
    testCompile 'io.kotlintest:kotlintest-core:3.1.6'
    testCompile 'io.kotlintest:kotlintest-assertions:3.1.6'
    testCompile 'io.kotlintest:kotlintest-runner-junit5:3.1.6'

    // Spek
    testCompile 'org.jetbrains.spek:spek-api:1.1.5'
    testRuntime 'org.jetbrains.spek:spek-junit-platform-engine:1.1.5'
}

repositories {
    mavenCentral()
    mavenLocal()
    jcenter()
}

test {
    // Enable JUnit 5 (Gradle 4.6+).
    useJUnitPlatform()

    // Always run tests, even when nothing changed.
    dependsOn 'cleanTest'

    // Show test results.
    testLogging {
        events "passed", "skipped", "failed"
    }
}

// Test coverage reporting
jacocoTestReport {
    // Enable xml for coveralls.
    reports {
        html.enabled = true
        xml.enabled = true
        xml.setDestination(file("${buildDir}/reports/jacoco/test/jacocoTestReport.xml"))
    }
}

coveralls {
    sourceDirs += ['src/main/kotlin']
    jacocoReportPath = 'build/reports/jacoco/test/jacocoTestReport.xml'
}

相关问题

  • 本质上,相同的问题是 https://github.com/kt3k/coveralls-gradle-plugin/issues/32 但解决办法是设置 sourceDirsjacocoReportPath ,我已经试过了.
  • At https://github.com/kt3k/coveralls-gradle-plugin/issues/39 https://github.com/kt3k/coveralls-gradle-plugin/issues/63 建议添加 sourceDirs += ['src/main/kotlin'] ,这听起来很明智,但没有帮助.相同的,从第一个链接, sourceDirs = files(sourceSets.main.kotlin.srcDirs).files.absolutePath .
  • https://github.com/kt3k/coveralls-gradle-plugin/issues/77 解决方案是 project.extensions.coveralls.sourceDirs += project.sourceSets.main.kotlin.srcDirs 我试过.
  • 问题CI管道中的Kotlin代码覆盖率措辞相当笼统,但评论指出Discuss.kotlinlang.org有人展示了一种方法来改善关于kotlin的Jacoco结果,以及我使用和工作的Jacoco Gradle插件的答案链接: 当我运行 jacocoTestReport 任务报告在 build/reports/jacoco/test/ 中生成,包括xml和html.

  • 问题Kotlin测试覆盖率也是一般的措辞,并回答了一个不必要的复杂的构建文件,从中我学到了什么新东西.

  • 问题测量Kotlin代码的测试覆盖率?声称雅科科报告不起作用,但对我来说,情况并非如我所说.
  • Java也有类似的问题,比如GitHub上的java代码覆盖率工具但是对我来说,当我使用Java时,一切都很好.
  • 实际上,我想使用Gradle Kotlin DSL,但是因为似乎没有人使用它,所以我在为Gradle问这个问题.但是最后,我希望Kotlin DSL也能解决这个问题.


    如何将Kotlin source的测试报告上传到工作服? 方法1

    在不支持或仅部分支持Kotlin代码库的各种QA产品方面也有类似的经验.尝试向几个项目提交支持PRs,但无济于事.

    在最后结束了与工作服,并贡献了一个Kotlin专注插件的平台

    http://www.boost.org/doc/libs/1_39_0/libs/smart_ptr/shared_ptr.htm

    用法

    在您的 build.gradle.kts 中包含插件 (类似于 build.gradle 文件):

    plugins {
        jacoco
        id("com.github.nbaztec.coveralls-jacoco")
    }
    

    然后将环境变量 COVERALLS_REPO_TOKEN 设置为您的工作服页面中的令牌.

    现在,您可以使用 coverallsJacoco 任务发布覆盖率报告.

    有关CI中的详细信息和用法,请参阅 https://github.com/nbaztec/coveralls-jacoco-gradle-plugin


    如何将Kotlin source的测试报告上传到工作服? 方法2

    [编辑 2020 年 8 月] @ nbaztec写了一个支持Kotlin的插件,请参阅他的回答.

    旧答案:

    工作服不支持Kotlin,例如,请参见问题中提到的这种开放式isse (在问题中也提到,那里提供的变通方法不起作用): https://github.com/kt3k/coveralls-gradle-plugin/issues/77

    解决方案: tryCodecov.io相反.使用将其安装到GitHub市场并添加到您的 .travis.yml

    after_success:
      - bash <(curl -s https://codecov.io/bash)
    

    然后承诺并推动,完成!

    您可以在查看结果 (构建完成后) https://codecov.io/gh/githubaccountname/reponame


    .htaccess .net .net-core 2d 3d actions-on-google actionscript-3 activemq acumatica adobe-xd ag-grid air ajax akka alexa algorithm alignment allure amazon-cognito amazon-deequ amazon-dynamodb amazon-ec2 amazon-redshift amazon-s3 amazon-web-services amcharts amcharts4 amp-html anaconda android