Я пытаюсь создать новый Matcher для эспрессо, чтобы иметь возможность выбрать элемент списка.Это отлично работает для простого класса, такого как Office.См. Этот пример.
private fun withOffice(title: String): Matcher<Any> {
return object : BoundedMatcher<Any, Office>(Office::class.java) {
override fun describeTo(description: Description?) {
description?.appendText("with title '$title'");
}
public override fun matchesSafely(office: Office): Boolean {
return office.name == title
}
}
}
Однако при вводе дженериков все становится сложнее, как в этом классе.
class KeyTranslationPair<F, S> extends Pair<F, S>
Попытка создать Matcher, подобный этому
private fun withCompanyType(companyType: CompanyType): Matcher<Any> {
return object : BoundedMatcher<Any, KeyTranslationPair<CompanyType, String>>(KeyTranslationPair<CompanyType, String>::class.java) {
override fun describeTo(description: Description?) {
description?.appendText("with companyType '$companyType'");
}
public override fun matchesSafely(keyTranslationPair: KeyTranslationPair<CompanyType, String>): Boolean {
return keyTranslationPair.key == companyType
}
}
}
приводит к следующей ошибке
Я предполагаю, что kotlin смешивает вещи с системой типов Java.Может быть, у кого-то есть идея здесь.