Kotlinコードの単体テストを記述してjunit/hamcrestマッチャーを使用したいのですが、is
メソッドを使用したいのですが、これはKotlinの予約語です。
以下をコンパイルするにはどうすればよいですか?
class testExample{
@Test fun example(){
assertThat(1, is(equalTo(1))
}
}
現在、私のIDEであるInteliJは、)
の後is
?
Kotlinでは、is
は予約語です。これを回避するには、バッククォートを使用してコードをエスケープする必要があるため、次のコードでコードをコンパイルできます。
class testExample{
@Test fun example(){
assertThat(1, `is`(equalTo(1))
}
}
is
キーワードを使用してインポートする場合、Is
(as
など)にエイリアスを設定できます。
例えば:
import org.hamcrest.CoreMatchers.`is` as Is
https://kotlinlang.org/docs/reference/packages.html を参照してください
他の人が指摘したように、Kotlinではis
は予約語です( Type Checks を参照)。しかし is
関数は単なるデコレータなので、これはHamcrestでは大きな問題ではありません。コードを読みやすくするために使用されますが、適切に機能するために必要ではありません。
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))