Unity2019.2以降のTest RunnerをJenkinsと連携させる時の備忘録


はじめに

Test RunnerとJenkinsを連携させる際にバージョンの違いでいくつかコマンドの変更などがあったので、簡単にまとめたいと思います。EditModeとPlayMode両方に対応しています。

環境

  • Windows 10 Home
  • Jenkins: ver. 2.204.1
  • Unity 2019.2.17f1
  • Test Framework 1.0.18

Test Runnerの導入

2019.2以降ではデフォルトでTest Runnerが使えない状態になっています。[Window]->[Package Manager]から「Test Framework」をInstallしてください。

インポートが終わると、[Window]->[General]->[Test Runner]からビューを表示できるようになります。

Tests Assemblyの作成

こちらの記事が分かりやすかったです。

Unityでテストを書くのが当然になる時代に今から備えよう - Qiita

Jenkinsとの連携

概ねこちらの記事の通りなのですが、いくつか詰まった部分があるので補足していきます。

UnityのEditor Test RunnerをJenkinsで走らせて、Slackで通知 - Qiita

コマンドラインからTestを実行

ドキュメントはこちらです(Test Framework @1.0系)。
Running tests from the command line | Package Manager UI website

コマンドライン引数のマニュアルTest Runnerのマニュアルを見てもほとんど記述がないので混乱するのですが、Package ManagerのTest Frameworkのページに載っていました。今後はこちらに移行するのかと思ったのですが、Unity2020.1のTest Runnerのマニュアルページは存在していてよく分からないです。

テストはこのように実行します。

-batchmode -runTests -testPlatform editmode -testResults "${WORKSPACE}\result.xml" -logFile
  • runTests: テストを実行します。
  • testPlatform: editmodeもしくはplaymodeを指定することができます。testPlatformがない場合はデフォルトEditModeで実行されます。この部分にプラットフォーム(StandaloneWindows, iOSなど)も指定できるようですが未確認です。
  • testResults: 結果ファイルのパスを指定できます。単にresult.xmlだけでは出力に失敗したので、絶対パスで指定するようにしてください。

また、古いバージョンとの差分は恐らくこのようになっています(後方互換性あるかも)。

  • runEditorTests->-runTests
  • testsResultFile->testResults

テスト結果をビルド結果に反映させる

EditModeとPlayModeの両方のテスト結果を通知する方法を紹介します。先の記事にあるNUnit Pluginを導入してください。(JUnitではないので注意です)

差分として、標準で書き出されるファイル名がEditorTestResults.xmlでなくTestResults-xxxxxxxxxxxxxxxxxx.xml(xは数字)に代わっています。

そのため、[NUnit test result report]の[Test report XMLs]には*.xmlを指定し、ビルド時には下記のようなコマンドを設定してください。

# EditModeテストの実行
-batchmode -runTests -testPlatform editmode -testResults "${WORKSPACE}\result-editmode.xml" -logFile
# PlayModeテストの実行
-batchmode -runTests -testPlatform playmode -testResults "${WORKSPACE}\result-playmode.xml" -logFile

こうすることで、それぞれのビルド結果がresut-editmode.xml,resutl-playmode.xmlに出力され、*.xmlで両方ともビルド結果に反映されるようになります。出力ファイルはビルドする毎に上書きされます。出力ファイル名を指定しない場合はビルド毎に新しいファイルが生成されるため、ビルド結果に前回のテスト結果も含まれてしまう点に注意してください。また、誤ってEditModeとPlayModeの出力ファイル名を同じにしてしまうと後から実行された方に結果が上書きされてしまう点にも注意してください。

参考