【发布时间】:2016-06-11 12:54:34
【问题描述】:
我有以下构造函数:
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 看到的唯一东西
【问题讨论】:
-
从技术上讲,您在字节码中有四个构造函数,并且您只调用其中一个。这与 Java 中的相同。
-
我正在调用不同的构造函数 - 但 jacoco 只看到一个构造函数
-
啊,正好相反。有道理。
-
你怎么知道你调用了不同的构造函数?在 kotlin 中,只有一个应该是可见的(带有矩阵的那个)
标签: java code-coverage kotlin jacoco