1.21 jigowatts

Great Scott!

VSTest.Console でコマンドラインからテストを実行する

概要

前回MSBuildコマンドラインからビルドしてみました。ということで今回は単体テストコマンドラインから実行してみます。

sh-yoshida.hatenablog.com

f:id:sh_yoshida:20170528235357p:plain

環境

VSTest.Console

Visual Studioで書いた単体テストのコードをコマンドラインから実行するにはVSTest.Console.exeを使います。テストフレームワークの名前はMSTestだけどMSTest.exeじゃないってのはちと紛らわしいですね。

VSTest.Console.exe を使用して、単体テストまたはコード化された UI テストをコマンドラインから実行します。 これは Visual Studio 2012 以降のバージョンに関してパフォーマンスで最適化されており、MSTest.exe の代わりに使用されます。

https://msdn.microsoft.com/ja-jp/library/jj155800.aspx

Visual Studio Community 2017をデフォルトでインストールした場合のVSTest.Console.exeの場所は以下にありました。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe

構文

Vstest.console.exe [TestFileNames] [Options]

パスを通すか、フルパスでVSTest.Consoleを実行します。引数にはテスト対象のdll。長くなるので以降はパスは省略します。

> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "C:\src\workspace\ClassLibrary1\ClassLibrary1Tests\bin\Debug\ClassLibrary1Tests.dll"

詳細なオプションは以下。
VSTest.Console.exe のコマンド ライン オプション

x64ビルドしたdllをテスト

64bitでビルドした場合、例えば"C:\src\workspace\ClassLibrary1\ClassLibrary1Tests\bin\x64\Debug"のようにテストプロジェクトのx64フォルダ以下にテストdllが出力されるので、こいつを引数に渡します。

> MSBuild ClassLibrary1.sln /t:clean;rebuild /p:configuration=Debug;platform=x64
> vstest.console ClassLibrary1Tests.dll /platform:x64 /framework:framework45 /inIsolation

複数のプロジェクトをテスト

それぞれのテスト対象dllのパスをスペースで区切って渡します。

> vstest.console ClassLibrary1Tests.dll ClassLibrary2Tests.dll

指定したテストメソッドのテスト

複数テストメソッドを指定する場合はカンマで区切って指定します。

> vstest.console ClassLibrary1Tests.dll /Tests:TestMethod1,TestMethod2

テスト結果ファイル(TRX)を出力

TestResultsフォルダに拡張子trxファイルが出力されます。このファイルをダブルクリックで開くとVisual Studioのテスト結果ウィンドウで見ることができます。

> vstest.console ClassLibrary1Tests.dll /Logger:trx

コードカバレッジを取得

Communityエディションでは残念ながら「警告: 診断データ アダプター ('コード カバレッジ') のメッセージ: CodeCoverage.exe が見つかりません。。」と表示され利用できません。

> vstest.console ClassLibrary1Tests.dll /EnableCodeCoverage

テスト実行

64bitでビルドして出来上がった二つのテストプロジェクトをテストして結果を出力してみました。

f:id:sh_yoshida:20170528235357p:plain

出力されたテスト結果ファイルをダブルクリック。

f:id:sh_yoshida:20170528235435p:plain

Visual Studioが起動して、テスト結果ウィンドウに表示されました。

f:id:sh_yoshida:20170529000736p:plain

コマンドラインでのビルドとテスト実行の雰囲気がなんとなくわかったところで次回はJenkinsと連携してみます!