Kotlin для assertThat (foo, instanceOf (Bar.class))

Как бы вы написали assertThat(foo, instanceOf(Bar.class)) с Kotlin?

Кажется, что это не нравится .class

Я хотел бы получить утверждение, которое является более «точным», чем просто assertTrue(foo is Bar) если возможно

Bar::class возвращает экземпляр KClass , который эквивалентен Kotlin класса Java.

instanceOf метода instanceOf требуется экземпляр Class , а не KClass , поэтому вам нужно преобразовать его, используя Bar::class.java .

Поэтому ваше утверждение должно выглядеть так:

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

Подробнее о Java interop вы можете найти здесь .

Также вы можете взглянуть на библиотеку Хамкреста, которая может добавить к вашим утверждениям дополнительную уверенность :

 assert.that(foo, isA<Bar>()) 

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

Документация: https://kotlinlang.org/docs/reference/java-interop.html#getclass