Kotlin 在使用mockk验证和断言库时,请检查所有断言和验证

Kotlin 在使用mockk验证和断言库时,请检查所有断言和验证,kotlin,mockk,kotlintest,Kotlin,Mockk,Kotlintest,我希望测试报告所有断言和验证。因此,mock验证和断言库在本例中,KotlinTest断言应该运行,而不是短路 换句话说,我不想让考试停止 verify(exactly = 1) { mock.methodcall(any()) } // ... here success shouldBe true // how can I check this line too 也不是 success shouldBe true // ... here verify(exactly = 1) { mock.

我希望测试报告所有断言和验证。因此,mock验证和断言库在本例中,KotlinTest断言应该运行,而不是短路

换句话说,我不想让考试停止

verify(exactly = 1) { mock.methodcall(any()) } // ... here
success shouldBe true // how can I check this line too
也不是

success shouldBe true // ... here
verify(exactly = 1) { mock.methodcall(any()) }  // how can I check this line too

如何做到这一点?如果我能同时使用一个工具,我愿意使用它。

根据你的评论,你说你正在使用KotlinTest

在KotlinTest,我相信您可以使用以下方法来实现您想要的行为:

通常,像shouldBe这样的断言在失败时抛出异常。但有时您希望在测试中执行多个断言,并希望看到所有失败的断言。KotlinTest为此提供了AssertSoftware功能

assertSoftly {
  foo shouldBe bar
  foo should contain(baz)
}
如果块内的任何断言失败,测试将继续运行。所有故障都将在块末尾的单个异常中报告

然后,我们可以将您的测试转换为使用AssertSoftware:


当AssertSoftware抛出异常时,有必要将verify包装在shouldnotherwany中,以使AssertSoftware知道它

根据您的评论,您说您正在使用KotlinTest

在KotlinTest,我相信您可以使用以下方法来实现您想要的行为:

通常,像shouldBe这样的断言在失败时抛出异常。但有时您希望在测试中执行多个断言,并希望看到所有失败的断言。KotlinTest为此提供了AssertSoftware功能

assertSoftly {
  foo shouldBe bar
  foo should contain(baz)
}
如果块内的任何断言失败,测试将继续运行。所有故障都将在块末尾的单个异常中报告

然后,我们可以将您的测试转换为使用AssertSoftware:

有必要将verify包装在shouldthrowany中,以使AssertSoftwary在抛出异常时意识到它

shouldthrowany部分是我丢失的部分,非常感谢!不该错过的部分是我丢失的部分,非常感谢!