the*_*man 23 junit unit-testing hamcrest kotlin
我想为我的Kotlin代码编写单元测试并使用junit/hamcrest匹配器,我想使用该is方法,但它是Kotlin中的保留字.
如何编译以下内容?
class testExample{
@Test fun example(){
assertThat(1, is(equalTo(1))
}
}
Run Code Online (Sandbox Code Playgroud)
目前我的IDE,InteliJ强调,作为一个编译错误,说它期待一个)后is?
the*_*man 34
在Kotlin,is是一个保留词.要解决此问题,您需要使用反引号来转义代码,因此以下内容将允许您编译代码:
class testExample{
@Test fun example(){
assertThat(1, `is`(equalTo(1))
}
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*oko 33
使用关键字导入时,可以使用别名is(比如说Is)as.
例如:
import org.hamcrest.CoreMatchers.`is` as Is
Run Code Online (Sandbox Code Playgroud)
请参阅https://kotlinlang.org/docs/reference/packages.html
正如其他人指出的那样,在 Kotlin 中,is是一个保留字(参见类型检查)。但这对 Hamcrest 来说不是大问题,因为is函数只是一个装饰器。它用于提高代码可读性,但不是正常运行所必需的。
您可以自由使用较短的 Kotlin 友好表达式。
平等:
assertThat(cheese, equalTo(smelly))
Run Code Online (Sandbox Code Playgroud)
代替:
assertThat(cheese, `is`(equalTo(smelly)))
Run Code Online (Sandbox Code Playgroud)匹配器装饰器:
assertThat(cheeseBasket, empty())
Run Code Online (Sandbox Code Playgroud)
代替:
assertThat(cheeseBasket, `is`(empty()))
Run Code Online (Sandbox Code Playgroud)另一个常用的 Hamcrest 匹配器是类型检查,如
assertThat(cheese, `is`(Cheddar.class))
Run Code Online (Sandbox Code Playgroud)
它已被弃用,并且对 Kotlin 不友好。相反,建议您使用以下方法之一:
assertThat(cheese, isA(Cheddar.class))
assertThat(cheese, instanceOf(Cheddar.class))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5655 次 |
| 最近记录: |