Kotest コンパイラマッチャー(Compiler Matchers)
コンパイラマッチャーについて説明する。
kotest-assertions-compiler 拡張は、指定した Kotlin コード片がコンパイルされるかどうかを確認するマッチャーを提供する。この拡張は kotlin-compile-testing のラッパーであり、次のマッチャーを提供する。
String.shouldCompile()String.shouldNotCompile()File.shouldCompile()File.shouldNotCompile()
コンパイルマッチャーを追加するには、プロジェクトに次の依存関係を追加する。
testImplementation("io.kotest.extensions:kotest-assertions-compiler:${version}")
書き方:
class CompilationTest: StringSpec() {
init {
"shouldCompile test" {
val codeSnippet = """ val aString: String = "A valid assignment" """.trimMargin()
codeSnippet.shouldCompile()
File("SourceFile.kt").shouldCompile()
}
"shouldNotCompile test" {
val codeSnippet = """ val aInteger: Int = "A invalid assignment" """.trimMargin()
codeSnippet.shouldNotCompile()
File("SourceFile.kt").shouldNotCompile()
}
}
}
コード片のコンパイルを検査する間、呼び出しプロセスのクラスパスが継承されるため、呼び出しプロセスで使用できるすべての依存関係は、コード片をコンパイルする間にも使用できる。
指定した Kotlin コードがコンパイルされるかどうかを確認するマッチャー:
| マッチャー | 説明 |
|---|---|
string.shouldCompile() |
文字列が有効な Kotlin コードであることを確認する。 |
file.shouldCompile() |
ファイルに有効な Kotlin コードが含まれることを確認する。 |