この記事はkdnaktの1人 Advent Calendar 2020の11日目の記事です(1日遅れ)。
2020年は会社でKotlin dojoを主催して週1回30分Kotlinと戯れていました。12月はその集大成ということで、Kotlin/NativeでHTTPサーバーを作ってみたいと思います。どこまでできるか、お楽しみ……。
[IntelliJでのテストの実行]
IntelliJでKotlin/Nativeのテストを実行するには2通りのやり方があります。
Run Testボタンから実行する- ターミナルでコマンドを実行する
それぞれのやり方について見ていきます。
▼テスト対象クラス/メソッドのRun Testボタン
IntelliJでKotlin/Nativeのテストコードを開くと、テストクラスやテストメソッドの左側に「▶︎」のRun Testボタンが表示されています。


▼ターミナルでコマンドを実行する
次のコマンドを実行すると、テストを実行できます。
$ gradle cleanNativeTest nativeTest
[テスト結果]
▼通知
IntelliJ以外のアプリケーションを操作している場合も、実行したテストの結果は通知として表示されます。
テストがすべて成功した場合には、このような通知が表示されます。

失敗したテストがある場合には、このような通知が表示されます。

▼IntelliJのテスト結果画面
IntelliJの画面上でテスト結果を確認する場合、ウィンドウ下部の「▶︎ 4: Run」タブを表示します。Macの場合Cmd + 4で表示できます。

すべてのテストが成功した場合は次のような表示となります。緑のチェックマークとともに、Tests passed: 5 of 5 testsと実行されたテストメソッドの件数が表示されます。

失敗したテストがあった場合には、次のような表示となります。Tests failed: 1, passed 4 of 5 testsとあるので、5件中1件のテストが失敗したとわかります。

左側の窓には、失敗したテストメソッドの名称が表示されているので、どのテストを見直すべきか分かります。
テストに失敗したときは、右側の窓に以下のようなログが出力されているので、期待結果と実際の結果のズレを把握できます。
Testing started at 5:38 ... > Configure project :
(略)
> Task :cleanNativeTest > Task :compileKotlinNative (略) > Task :nativeProcessResources NO-SOURCE > Task :nativeMainKlibrary > Task :compileTestKotlinNative > Task :linkDebugTestNative > Task :nativeTest FAILED kotlin.AssertionError: should return /index.html. Expected </index.html>, actual <>.
(略) 5 tests completed, 1 failed FAILURE: Build failed with an exception.
▼テスト結果レポート
また、テストを実行すると、テスト結果レポートがhtmlファイルとしてbuildディレクトリ以下に出力されます。
$ tree build/reports
build/reports
└── tests
└── nativeTest
├── classes
│ └── com.kdnakt.kttpd.RequestParserTest.html
├── css
│ ├── base-style.css
│ └── style.css
├── index.html
├── js
│ └── report.js
└── packages
└── com.kdnakt.kttpd.html
build/reports/tests/nativeTest/index.htmlをブラウザで開くと次のようなテスト結果の概要画面が表示されます。失敗したテストメソッドの一覧が表示されています。

失敗したテストメソッドをクリックすると、テスト結果の詳細を確認できます。

Packagesをクリックすると、パッケージ毎のテスト結果を確認できます。

Classesをクリックすると、クラス毎のテスト結果を確認できます。

失敗したテストが多い場合には、IntelliJの画面よりもテストレポートを確認したほうが状況を把握しやすそうです。
[まとめ]
- Kotlin/Nativeでテストを実行した
- IntelliJの画面で直接テスト結果を確認した
- HTMLファイルに出力されたテストレポートでテスト結果を確認した