これの続きで、Jenkinsに単体テスト(MSTest)をさせます。
Jenkinsの設定-アドイン
「Jenkinsの管理>プラグインの管理>利用可能タブ」からアドインを追加しましょう。
- MSTest plugin
- MSTestRunner plugin
Jenkinsの設定-システムの設定
「Jenkinsの管理>プラグインの管理」でMSTest pluginの設定をしましょう。
MSTest plugin
Name : Visual Studio 12.0 Path to MSTest : C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\MSTest.exe
PathにMSTest.exeへのフルパスを指定。Visual Studio 2013(Community Edition)*1をインストールしている場合は上述のような感じになります。
ジョブ
前回のジョブのビルドを以下のように変更します。
- 単体テストプロジェクトをDebugでコンパイル
- TestResultsディレクトリ(ソリューション)を初期化
- MSTestRunnerを使用して単体テスト実行
- 最後に本体のプロジェクト(ソリューション)をReleaseでコンパイル
MSTestで単体テストを実行するには、単体テストプロジェクトのDLLが必要になるので、先にコンパイルしてきます。
と、その前に、作業ディレクトリが「C」のままでしたので「高度な設定」で適当なディレクトリに変えときましょう。
D:\Users\USER_NAME\Document\Jenkins\PROJECT_NAME
単体テストプロジェクトをDebugでコンパイル
これはMSBuild の設定をするだけなので、基本的に前回と同じ。Releaseでコンパイルする必要がないので、引数は
Command Line Arguments : /t:Clean;Rebuild /p:Configuration=Debug /nologo
こんな感じにしておきましょう。
TestResultsディレクトリ(ソリューション)を初期化
これは「Windowsバッチコマンドの実行」で実装しましょう。
rd "D:\Users\****\Document\Jenkins\****\tests\TestResults" /s /q md "D:\Users\****\Document\Jenkins\****\tests\TestResults"
MSTestRunnerを使用して単体テスト実行
ここが本題。「Run unit tests with MSTest」を以下のように設定します。
Ms Test Version : Visual Studio 12.0 Test Files : D:\Users\****\Document\Jenkins\****\tests\Test.Kairyu\bin\Debug\Test.Kairyu.dll Result File Name : D:\Users\****\Document\Jenkins\****\tests\TestResults\Test.Kairyu.Results.trx Command Line Arguments : /nologo
最後に本体のプロジェクト(ソリューション)をReleaseでコンパイル
これは前回のヤツそのままなので、特になし。
実行結果
こんな感じ。
結果 トップ レベルのテスト -- ----------- 失敗しました Test.Kairyu.ConnectionTest.ToLoaderTest 失敗しました Test.Kairyu.CustomNameTest.LoadToItem 成功 Test.Kairyu.EntityDefinitionTest.PrefixName 成功 Test.Kairyu.IgnoreArchiveTest.IsDirty_Change 成功 Test.Kairyu.IgnoreArchiveTest.IsDirty_NoChange 成功 Test.Kairyu.IgnoreArchiveTest_List.IsDirty_Change 成功 Test.Kairyu.IgnoreArchiveTest_List.IsDirty_NoChange_Any 成功 Test.Kairyu.IgnoreArchiveTest_List.IsDirty_NoChange_Nothing (略) 失敗しました Test.Kairyu.UpperSaveTest_Reference.SaveAsNew_List_Reference 88/155 テスト 成功, 67 失敗しました 概要 -- テストの実行 失敗しました です。 失敗しました 67 成功 88 ----------- 合計 155
Result File Name で指定した trx ファイルを開けばエラーの詳細が分かります。
ちなみにエラーは
System.Data.SqlClient.SqlException: System.Data.SqlClient.SqlException: CREATE TABLE 権限がデータベース 'tempdb' で拒否されました。
でした。VSからやれば正常に動作するんですけどねぇ。Windows認証に失敗してるならわかるけど、CreateTable権限がない?ちょいよくわかりませんね。