kotlin:如何重载导入的函数

kotlin: how to overload imported function

我使用 assertj。其中,它具有函数 assertThat(int)assertThat(Object)。我想添加我自己的功能

fun <T> assertThat(flux: Flux<T>) = assertThat(flux.toStream())

但我似乎不能轻易使用它。当我在测试 class MyTest 之外声明函数时,测试中的函数调用绑定到 assertThat(Object) 而不是 assertThat(Flux):

import org.assertj.core.api.Assertions.assertThat

//<----------- if declared here, doesn't work

class MyTest {

   //<----------- if declared here, all is ok

  @Test fun test() {
     assertThat(Flux.just(1)).containsExactly(1)
  }
}

我应该怎么做才能使用我的功能?

您可以在额外的文件中定义它并显式导入它。我认为在您的文件中定义时添加导入甚至会有所帮助,但 IDE 将此导入显示为未使用。

建议是:在 your/package/testutils.kt 中定义扩展然后导入它:

import your.package.assertThat