16

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

是否有与 AssertJ 等效的 Kotlin 或更好的断言方式?

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

4

2 回答 2

18

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

assertThat(info)
  .containsKey("foo")


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

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

于 2017-08-16T10:16:29.483 回答
7

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

它尤其支持:

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

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

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

于 2017-12-02T19:44:18.680 回答