web-dev-qa-db-ja.com

コマンドラインMSTest.exeを使用して、ソリューション内のすべてのテストを実行する方法

MSDN here と議論された here によると、MSTest.exeを使用してコマンドラインからテストを実行できます-これはIDE(私のような大きなソリューションに取り組んでいる場合は特に遅くなります)。

私の質問は、どのようにMSTest.exeを使用してallテストをsolution?このコマンドには、/testオプションで指定されたoneアセンブリのテストをフィルターする/containerオプションのみがあります。すべてのNテストアセンブリをソリューションに含めることができる場合、このコマンドをN回呼び出すことしか考えられません(!?)さらに、実行後の結果はアセンブリごとの基本であるため、失敗したテストを取得するのは簡単ではありません/合格しました。

より良い方法をご存知の場合は、共有してください!ありがとうございました!

42
Nam G VU

testmetadata引数を使用してこれを達成し、.vsmdiファイルを指すようにしました。

説明したとおり ここ

例えば。:

mstest /testmetadata:mySolution.vsmdi

ただし、testmetadataはより脆弱になる可能性があることに注意してください(例: 空のテストリストと無視属性を組み合わせると、「指定されたキャストが無効です」 )。テストクラスを含むすべてのDLLを使用してバッチを作成する方が、信頼性が高くなります。

13
chief7

何もインストールしたりvsmdiファイルを生成したりせずに、同じものが必要だったので、以下のPowerShellスクリプトを考え出しました。 [〜#〜] all [〜#〜]テストをoneフォルダーおよびそのサブフォルダーに対するコマンド(solutionではありませんが、私には問題ありません)。

このスクリプトをよりエレガントにする方法を提案してください:

$x = ""; dir *\bin\*test*.dll -Recurse | foreach { $x += "/testcontainer:""$_"" " }; iex "mstest $x"

手順:

  • mstest.exe変数PATHを介してEnvironment variablesへのパスを追加します。そうでない場合は、上記のmstestスクリプトでPowerShellを完全なパスに置き換えます。

    enter image description here

  • PowerShellを開き、コマンドを貼り付けます。
  • 必要に応じて*\bin\*test*.dllを変更してください。現在のスクリプトでは、DLLsフォルダー内のすべてのbinを再帰的に取得し、ファイル名に部分文字列「test」を含めます。
  • コマンドを実行してください!
9
Gabrielius

Gallio テストに付属している Gallio.Echo テストランナーを確認することをお勧めします。自動化プラットフォーム。多くの便利なレポートツールとテストランナーを備えた無料の(OSS)パッケージであり、既存のほとんどのテストフレームワーク(MbUnit、NUnit、MSTest、xUnitなど)をサポートしています。

alt text

具体的には、 Gallio.Echo は多目的なコマンドラインテストランナーです。テストアセンブリ、さまざまなフィルター、および多くの追加オプションのリストを指定できます。 Gallioはテスト結果を単一のレポート(Xml、Html、Zipなど)に統合します。

5
Yann Trevin