Tag:

如何在多项目中使用Spek来设置Jacoco?

我想要测量雅科科在儿童项目之一的model项目中的覆盖面。 然而,在test任务之后, jacocoTestReport任务被跳过。 test : :model:compileKotlin UP-TO-DATE :model:compileJava UP-TO-DATE :model:copyMainKotlinClasses UP-TO-DATE :model:processResources UP-TO-DATE :model:classes UP-TO-DATE :model:compileTestKotlin UP-TO-DATE :model:compileTestJava UP-TO-DATE :model:copyTestKotlinClasses UP-TO-DATE :model:processTestResources UP-TO-DATE :model:testClasses UP-TO-DATE 3 10, 2017 8:17:48 org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry loadTestEngines Discovered TestEngines with IDs: [spek] :model:junitPlatformTest Test run finished after 113 ms [ 4 containers found ] [ 0 containers skipped ] [ 4 […]

Jacoco覆盖率和Kotlin默认参数

我有以下的构造函数: open class IPFS @JvmOverloads constructor(protected val base_url: String = "http://127.0.0.1:5001/api/v0/", protected val okHttpClient: OkHttpClient = OkHttpClient.Builder().build(), protected val moshi: Moshi = Moshi.Builder().build()) { 现在当测量覆盖面时,我总是会错过使用默认值的时候。 我能想到的唯一出路就是在java中使用其他构造函数编写一些测试 – 但是我想留在纯粹的kotlin中 – 有没有办法做到这一点? 更新:我在我的测试中使用像IPFS()构造函数 – 但我认为在生成的Java字节码这是所有3个参数转换为构造函数 – 这是唯一的事情jacoco看到

如果安装了JaCoCo,Kotlin导入包级别的“val”对象将从Android库模块中失败

我发现我认为是Kotlin和JaCoCo覆盖工具之间的交互错误。 在库中UsefulObjects.kt : package com.example.library object Turtles { val allTheWayDown = "Yertle" } val canYouHearTheDrums: Boolean get() = Turtles.allTheWayDown == "Yertle" 在主应用程序MainActivity.kt : package com.example.importobjectfails import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.util.Log import com.example.library.Turtles import com.example.library.canYouHearTheDrums class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Log.d("THIS", canYouHearTheDrums.toString()) Log.d("THAT", Turtles.allTheWayDown) } } JaCoCo测试覆盖被禁用,上面的代码编译和运行,写预期的消息到Android控制台。 JaCoCo启用代码甚至不编译,它失败了: […]

Jacoc Jenkins插件与Kotlin

我希望Jacoco插件在Jenkins的构建报告上发布CodeCoverage,我已经准备好在工作阶段 stage('JaCoCo') { sh './gradlew testProdDebugUnitTestCoverage' jacoco(execPattern: '**/build/jacoco/testProdDebugUnitTest.exec', classPattern: '**/build/tmp/kotlin-classes/prodDebug', sourcePattern: '**/src/main/kotlin') } 但是我仍然得到0%,当地生成的报告显示8%

没有涵盖Kotlin方法的报道

在编译过程中,用inline关键字标记的Kotlin函数是内联的,似乎代码覆盖工具(如JaCoCo )无法正确计算代码覆盖率。 克服这个问题的常用方法是什么? 有没有办法让测试以某种方式避免内联步骤,并直接调用测试方法? 是否有可能跳过所有内联方法的报告生成(例如通过Gradle任务),而不排除整个类?

Android(Kotlin)代码覆盖率异常

Android连接测试中的代码覆盖率(Jacoco)是确定哪些方法/功能需要某些TLC的非常有用的方法。 现在我正在通过Java切换到Kotlin,我发现了一些我无法解释的异常,因为这个屏幕截图显示了: 以$ _开头的方法是Kotlin或Android的内部方法,我强烈怀疑。 我的问题是:1)有没有人有任何洞察,为什么这些方法包括在雅科克代码覆盖率报告,2)有没有办法排除他们?