AssertJ 库是否有 Kotlin 等效项?

Is there Kotlin equivalent for AssertJ library?

我正在将一些测试从 Java 转换为 Kotlin。对于 Java 测试,我使用 AssertJ 库,它非常强大并且有丰富的断言集。我的问题是对于 Kotlin 测试我不能使用 AssertJ 和 Kotlin JUnit (org.jetbrains.kotlin:kotlin-test-junit) 的断言集非常有限。

是否有 AssertJ 的 Kotlin 等价物或更好的断言方法?

我找到了 Kluent library,但我仍然不确定这是否是最好的库。

没有官方的对应物,但基本的 AssertJ 在许多情况下仍然可用并且看起来相当不错:

assertThat(info)
  .containsKey("foo")


assertThatThrownBy { session.restTemplate.postForLocation("foo", {}) }
  .isExactlyInstanceOf(HttpClientErrorException::class.java)

如果你想要专用的包装器,这个早期项目正试图实现这一点:https://github.com/wuan/assertj-core-kotlin

您可能不再搜索断言库,但以防万一您对当前的选择不满意,请查看 https://github.com/robstoll/atrium

它特别支持:

  • 断言组
  • 可空类型的断言函数
  • 属性 断言
  • 方法断言
  • 假设抛出一个 Throwable

以及更高级的功能,例如复杂的断言构建器、对 i18n 的支持等等。

自述文件中的示例将为您提供一个很好的概述: https://github.com/robstoll/atrium/blob/master/README.md#examples