.NET アプリの CLI でのテストでは MSTest.exe ではなく vstest.console.exe を使おう

  • 17
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

Visual Studio 2013 でテストを実行する際、プロセッサのアーキテクチャはメニューの [テスト] -> [テスト設定] -> [既定のプロセッサアーキテクチャ] から、x86 / x64 を選択できます。

しかし、CI ツールなどから CLI でテストを流す時、これまで通り MSTest.exe を使おうとすると、例えば Oracle Data Provider for .NET (ODP.NET) で DB 接続するケースで、開発環境に 64bit 版のみがインストールされている場合、MSTest.exe は 32bit 版を使おうとするため

要求された .Net Framework データ プロバイダーが見つかりません。これは、インストールされていない可能性があります。

のようなエラーを吐いてテストが失敗してしまいます。MSTest.exe は x86 のプロセッサアーキテクチャのみに対応した古いツールということになります。

そこで、MSTest.exe ではなく vstest.console.exe を使います。

MSTest.exe は(Visual Studio 2013 の場合)、C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE 配下にありますが、vstest.console.exe は C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow 配下にあり IDE の拡張モジュールの位置づけでしょうか。

MSTest.exe も vstest.console.exe も 開発者コマンドプロンプト(C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts) にはパスが通されていて任意のフォルダで使用できます。

vstest.console.exe のコマンドラインオプションの解説は VSTest.Console.exe のコマンドラインオプション にあります。

/Platform:[ プラットフォームの種類 ] でプロセッサアーキテクチャ(x86、x64、および ARM )を指定できます。

Jenkins では VSTestRunner Plugin というプラグインが提供されていて、プロセッサアーキテクチャは WebUI のラジオボタンで設定できます。