在一个纯Kotlin项目中,我正在使用JUnit Jupiter 5.5.2和AssertJ 3.10.0。以下测试执行成功:
@Test
fun `Validates something`() = runBlocking {
try {
// Assert something
} catch (t: Throwable) {
fail("Should not throw $t")
}
}
一旦我更新到AssertJ 3.11.1,测试构建就会失败,并显示以下消息:
类型推断失败:没有足够的信息来有趣地推断参数T(p0:字符串!):T!
请明确指定。
如果我使用fail<Nothing>("Should not throw $t")
,然后使用No test were found
。
我试图弄清楚发生了什么-尽管没有成功。
答案 0 :(得分:3)
似乎问题在于runBlocking
表达式主体。如果将其转换为块体,则无论您在fail
方法中使用哪种类型(以Nothing
为例,可以为Any
,{ {1}}或其他任何类型):
Any?