当前位置: 首页 > 知识库问答 >
问题:

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

吉毅
2023-03-14

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

共有1个答案

徐晔
2023-03-14

好吧,要测试一个方法,不管是静态的还是不静态的,您可以像实际代码那样调用它,并检查它是否做了正确的事情。

例如,假设这个扩展方法是在文件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);
 类似资料:
  • 问题内容: 有人可以告诉我如何在Kotlin中对扩展功能进行单元测试吗?由于它们是静态解析的,应该将它们作为静态方法调用还是作为非静态方法进行测试?另外,由于语言可以与Java完全互操作,因此应如何针对Kotlin扩展功能执行Java单元测试? 问题答案: 好吧,要测试一种方法(无论是否静态),您可以像实际代码那样调用它,并检查它是否做对了。 例如,假设此扩展方法在文件com / foo / Ba

  • 问题内容: 我还很陌生,因此无法找到任何文档或示例。我要做的是扩展基本服务,以便可以使用其他服务在基本服务下定义的方法。例如,说我有如下基本服务。 现在,我想定义一个从上述扩展的扩展服务,以便可以使用扩展服务中BasicService下定义的方法。也许像这样: 问题答案: 您应该注入以便能够访问它。旁边是对象文字,因此您实际上不能将其称为函数()。

  • JUnit5API中有几个可用的扩展点。 null 我可以使用相同的模式,因为上的可见性。 下面有几个具体的例子来演示: > 基于系统属性启用测试的。这可以通过一些反射和使用或样式的进行测试,但是当并行测试执行时,处理起来似乎更加复杂,可能会出现问题。此示例展示了“如何提供实际的并对结果进行断言”的示例。 扩展测试的自定义测试引擎是正确的方法吗? 那么,如何测试各种扩展实现而不依赖于内部API,并

  • 主要内容:扩展函数,扩展函数是静态解析的,伴生对象的扩展,扩展的作用域,扩展声明为成员Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。 扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。 扩展函数 扩展函数可以在已有类中添加新的方法,不会对原类做修改,扩展函数定义形式: receiverType:表示函数的接收者,也就是函数扩展的对象 functionName:扩展函数的名称 params:扩展函数的参数,可以为NULL 以下实

  • Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。 扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。 扩展函数 扩展函数可以在已有类中添加新的方法,不会对原类做修改,扩展函数定义形式: fun receiverType.functionName(params){ body } receiverType:表示函数的接收者,也就是函数扩

  • 我在Kotlin文件中定义了扩展函数。 其中是(生成的)java类。现在,我想用正常的java代码访问它: 然而,那是行不通的。IDE将无法识别方法,编译失败。