我希望测试报告所有断言和验证。因此,mockk
验证和断言库(在这种情况下,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
如何执行此操作?我愿意只使用一种工具。
答案 0 :(得分:3)
根据您的评论,您说您正在使用KotlinTest
。
在KotlinTest中,我相信您可以针对所需的行为使用assertSoftly
:
通常,断言之类的应该在失败时引发异常。但是有时候您想在一个测试中执行多个断言,并且想查看所有失败的断言。 KotlinTest为此提供了assertSoftly函数。
assertSoftly { foo shouldBe bar foo should contain(baz) }
如果块内的任何声明失败,则测试将继续运行。所有失败都将在该块末尾报告为单个异常。
然后,我们可以将您的测试转换为使用assertSoftly
:
assertSoftly {
success shouldBe true
shouldNotThrowAny {
verify(exactly = 1) { mock.methodcall(any()) }
}
}
有必要将verify
包裹在shouldNotThrowAny
中,以使assertSoftly
在引发异常时意识到这一点