はじめに
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の出力ファイル名を同じにしてしまうと後から実行された方に結果が上書きされてしまう点にも注意してください。