Kotlin为assertThat(foo,instanceOf(Bar.class))

你将如何用Kotlin编写assertThat(foo, instanceOf(Bar.class))

似乎它不喜欢.class

如果可能的话,我想去找一个比assertTrue(foo is Bar)更“精确”的断言

Bar::class返回KClass实例,这是Kotlin相当于Java的Class实例。

instanceOf方法需要Class实例,而不是KClass ,所以你必须使用Bar::class.java来转换它。

所以你的断言应该是这样的:

 assertThat(foo, instanceOf(Bar::class.java)) 

有关Java interop的更多信息,你可以在这里find。

你也可以看看哈姆雷斯特图书馆,这可能会增加你的断言流利程度:

 assert.that(foo, isA()) 

assertThat(foo, instanceOf(Bar::class.java))

文档: https : //kotlinlang.org/docs/reference/java-interop.html#getclass