web-dev-qa-db-ja.com

コマンドラインから単体テストテストを実行する方法

私はグーグルで調べて、以下の参考文献を見つけました。現在、私はコマンドラインからすべてを実行したい(実行と迅速性のため):

  1. 特定のテスト(つまり、[TestMethod()]とマークされたメソッドによって記述されたテスト)
  2. クラス内のすべてのテスト
  3. 私の変更を保留している現在のTFSのすべての影響テスト。
  4. すべてのテスト
  5. カテゴリとしてマークされたものを除くすべてのテスト[TestCategory( "some-category")]

上記の私のニーズに合った正しいコマンドをどのように書くことができるのか分かりません。

参照:

  1. mSTest.exe http://msdn.Microsoft.com/en-us/library/ms182487.aspx
  2. mSTest.exeの詳細オプション http://msdn.Microsoft.com/en-us/library/ms182489.aspx
  3. 結果の取得 http://msdn.Microsoft.com/en-us/library/ms182488.aspx

[編集]

しばらくして、以下の役立つヒントを見つけました。

  1. 私の場合、%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exeにあるMSTest.exeを使用してVisual Studio単体テストを実行します。
  2. /testcontainer:Path\To\Your\TestProjectAssembly.dllを使用して、テストがコーディングされている場所を示します。必要に応じて、複数の「/ testcontainer」オプションを指定できます。
  3. /test:TestFilterを使用して、実行するテストをフィルタリングします。このフィルターは完全なテストメソッド名(つまり、FullNamespace.Classname.MethodName)に適用されることに注意してください。
50
Nam G VU

現在、私は自分のニーズにいくつか答えがあります:

  1. 特定のテスト(つまり、[TestMethod()]とマークされたメソッドによって記述されたテスト)
    使用する MSTest.exe/container:AssemblyContainingYourSpecificTest/test:TheSpecificTestName

  2. クラス内のすべてのテスト
    使用する MSTest.exe/container:TheAssemblyContainingYourClass/test:TheClassNameWithFullNamespace
    /test:は、フィルタリング時にクラスのフルネームを使用するフィルターです。

その他はまだ不明のままです。方法を知っている場合は議論してください。

15
Nam G VU

番号4。の場合、アセンブリ内のすべてのテストを実行するには、次のようにします。

mstest /testcontainer:YourCompiledTestAssembly.dll

13

質問用

5カテゴリとしてマークされたものを除くすべてのテスト[TestCategory( "some-category")]

使用する

mstest.exe /testcontainer:yourTests.dll  /category:"!some-category"

複数のカテゴリを除外する必要がある場合は、使用します

mstest.exe /testcontainer:yourTests.dll  /category:"!group1&!group2"

リファレンス: / category filter

4

Gallio バンドルに興味があるかもしれません。さまざまなテストランナー(GUI、コマンドライン、PoSh、サードパーティツールのプラグインなど)でテスト(MSTest、MbUnit、NUnit、xUnitなど)を実行するための無料の共通自動化プラットフォームを提供します。

特に、Gallio.Echoを使用することができます。これは、ニースのコマンドラインテストランナーです。

Gallio.Echo

Gallioテストランナーには フィルタリング機能 があり、ユニットテストのサブセットのみを実行できます(たとえば、カテゴリごと、フィクスチャごとなど)。

3
Yann Trevin