我应该如何测试 Kotlin 扩展函数?

How should I test Kotlin extension functions?

有人能告诉我应该如何在 Kotlin 中对扩展函数进行单元测试吗?由于它们是静态解析的,因此应该将它们作为静态方法调用还是作为非静态方法进行测试?此外,由于语言与 Java 完全可互操作,因此应如何对 Kotlin 扩展函数执行 Java 单元测试?

好吧,要测试一个方法,无论它是否是静态的,您都可以像实际代码那样调用它,并检查它是否正确。

假设这个扩展方法,例如,定义在文件com/foo/Bar.kt:

fun String.lengthPlus1(): Int {
    return this.length + 1
}

如果您在 Kotlin 中编写测试(您通常会这样做来测试 Kotlin 代码),您会编写

assertThat("foo".lengthPlus1()).isEqualTo(4);

如果你把它写在Java中(但你为什么要那样做?)

assertThat(BarKt.lengthPlus1("foo")).isEqualTo(4);