Kotlin + JUnit
方針
- Python のサードパーティ コマンド
pytestコマンドを使う - 標準ライブラリの
unittestとの併用もできるようだ
前提
bash
brew install gradle
プロジェクト作成
bash
mkdir -p ~/workdir/SampleKotlin
code ~/workdir/SampleKotlin
- 設定ファイルはディレクトリ直下に置く
- toolchain の指定は、Java と Kotlin でターゲットの JVM バージョンを揃えるためのもの
- testLogging のブロックはコンソールに出る
settings.gradle.kts
settings.gradle.kts
rootProject.name = "SampleKotlin"
build.gradle.kts
build.gradle.kts
import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
kotlin("jvm") version "2.2.21"
}
group = "example"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
dependencies {
implementation(kotlin("stdlib"))
testImplementation("org.junit.jupiter:junit-jupiter:5.13.4")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
tasks.test {
useJUnitPlatform()
testLogging {
events("passed", "failed", "skipped")
exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
showStandardStreams = true
}
}
tasks.withType<JavaCompile>().configureEach {
options.release.set(24)
}
tasks.withType<KotlinCompile>().configureEach {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_24)
}
}
最小のコード
src/main/kotlin/sample/Add.kt
package sample
fun add(a: Int, b: Int): Int {
return a + b
}
src/test/kotlin/sample/AddTest.kt
package sample
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
class AddTest {
@Test
fun twoPlusThree() {
assertEquals(5, add(2, 3))
}
}
決まりごと
- フォルダ名: パッケージ名
- クラス名 :
*Test← gradle task で この名前をテスト対象としている - 関数名 : 特に制約なし
実行
bash
gradle test --rerun-tasks
--rerun-tasks を指定しているのは、毎回全部実行してほしいから
表示例
成功時
- 関数名は出ない →
--verboseオプションつければ出る - 標準出力も出ない →
--capture=noオプションつければ出る
txt
> Task :test
AddTest > twoPlusThree() PASSED
失敗時
txt
> Task :test FAILED
AddTest > twoPlusThree() FAILED
org.opentest4j.AssertionFailedError: expected: <5> but was: <6>
...
補足
テスト結果は HTML でも出力される。
- build/reports/tests/test/index.html
以下広告