我想为我的Kotlin代码编写单元测试并使用junit / hamcrest匹配器,我想使用is
方法,但它是Kotlin中的保留字。
如何进行以下编译?
class testExample{
@Test fun example(){
assertThat(1, is(equalTo(1))
}
}
目前我的IDE,InteliJ强调这是一个编译错误,说它在)
后期待is
?
答案 0 :(得分:28)
使用is
关键字导入时,您可以为Is
设置别名(比如as
)。
E.g:
import org.hamcrest.CoreMatchers.`is` as Is
答案 1 :(得分:27)
在Kotlin中,is
是一个保留字。要解决此问题,您需要使用反引号来转义代码,因此以下内容将允许您编译代码:
class testExample{
@Test fun example(){
assertThat(1, `is`(equalTo(1))
}
}
答案 2 :(得分:3)
正如其他人指出的那样,在Kotlin中,is
是保留字(请参阅Type Checks)。但这对Hamcrest来说不是什么大问题,因为is
函数只是一个装饰器。它用于提高代码的可读性,但并不是正常运行所必需的。
您可以随意使用简短的Kotlin友好表达式。
平等:
assertThat(cheese, equalTo(smelly))
代替:
assertThat(cheese, `is`(equalTo(smelly)))
匹配装饰器:
assertThat(cheeseBasket, empty())
代替:
assertThat(cheeseBasket, `is`(empty()))
另一个常用的Hamcrest匹配器是类似类型的检查
assertThat(cheese, `is`(Cheddar.class))
已弃用,而且它对Kotlin不友好。相反,建议您使用以下之一:
assertThat(cheese, isA(Cheddar.class))
assertThat(cheese, instanceOf(Cheddar.class))