1

我希望测试报告所有断言和验证。所以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

这个怎么做?如果我可以同时使用一种工具,我愿意只使用一种工具。

4

1 回答 1

3

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

在 KotlinTest 中,我相信你可以使用assertSoftly你想要的行为:

通常,像 shouldBe 这样的断言在失败时会抛出异常。但有时您想在测试中执行多个断言,并希望查看所有失败的断言。KotlinTest 为此提供了 assertSoftly 函数。

assertSoftly {
  foo shouldBe bar
  foo should contain(baz)
}

如果块内的任何断言失败,测试将继续运行。所有失败都将在块末尾的单个异常中报告。

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

assertSoftly {
    success shouldBe true
    shouldNotThrowAny {
        verify(exactly = 1) { mock.methodcall(any()) }
    }
}

当它抛出异常时,有必要进行包装以verify了解它shouldNotThrowAnyassertSoftly

于 2019-12-11T16:29:38.220 回答