Как скомпилировать код модульного теста Kotlin, который использует hamcrest 'is'
Я хочу написать модульный тест для своего кода Kotlin и использовать совпадения junit/hamcrest, я хочу использовать is
метод, но это зарезервированное слово в Kotlin.
Как я могу получить следующее для компиляции?
class testExample{
@Test fun example(){
assertThat(1, is(equalTo(1))
}
}
В настоящее время моя среда разработки InteliJ выделяет это как ошибку компиляции, говоря, что она ожидает )
после is
?
2 ответа
В Котлине is
это зарезервированное слово. Чтобы обойти это, вам нужно экранировать код с помощью обратных галочек, поэтому следующее позволит вам скомпилировать код:
class testExample{
@Test fun example(){
assertThat(1, `is`(equalTo(1))
}
}
Вы можете псевдоним is
(Сказать Is
) при импорте с помощью as
ключевое слово.
Например:
import org.hamcrest.CoreMatchers.is as Is
Как отмечали другие, в Котлине is
является зарезервированным словом (см. Проверка типов). Но это не большая проблема с Hamcrest, так как is
Функция просто декоратор. Он используется для лучшей читаемости кода, но не является обязательным для правильного функционирования.
Вы можете использовать более короткое, дружественное к котлину выражение.
равенство:
assertThat(cheese, equalTo(smelly))
вместо:
assertThat(cheese, `is`(equalTo(smelly)))
матч-декоратор:
assertThat(cheeseBasket, empty())
вместо:
assertThat(cheeseBasket, `is`(empty()))
Другой часто используемый инструмент Hamcrest - это проверка типа
assertThat(cheese, `is`(Cheddar.class))
Это устарело и не дружественно к котлину. Вместо этого рекомендуется использовать одно из следующих:
assertThat(cheese, isA(Cheddar.class))
assertThat(cheese, instanceOf(Cheddar.class))