2012-09-25 15 views
19

私は理想的にはすべてのビルドで実行したくない特定のテストの属性を持っています。私のテストのほとんどは通常の単体テストであり、すべてのビルドでそれらを実行したいのです。Visual Studio 2012 Test Runnerで特定のテストを除外する方法は?

So:どのようにカテゴリまたはプロジェクトタイプ別にテストを除外できますか?例えば

、私はCodedUItestsを除外したいと思います:

[CodedUITest] 
public class SearchViewTests 

...または指定されたTestCategoryでテストを除外する:

[TestMethod] 
[TestCategory("Database Integration")] 
public void ContactRepositoryGetByIdWithIdExpectCorrectContact() 

私は特にコード化されたUIテストを除外する彼らは私の能力を混乱させるので、他のすべてのテストは私を邪魔せずにバックグラウンドで楽しく実行します。

+0

ビルドサーバーを使用していますか? – Cybermaxs

+0

これはVisual Studio 2012に組み込まれているローカルテストランナーです。コードに対して実行しているので、まだコミットしていません。私はMSBuildを使って私が望むことをする方法を知っていますが、ローカルのTest Runnerでは知りません。テストビューテストエクスプローラに置き換えられており、カテゴリを意識していないようです - - Cyber​​maxsの答えはVS開発チームがそれを追加することができる示唆しているが – Fenton

答えて

6

「解決策」(またはより良い回避策)が動作することがわかったのは、「FullName」フィルタを指定することだけです。基本的に私は通常

  • ProjectA.UnitTests
  • ProjectA.IntegrationTests
  • など

    • PROJECTAように私のソリューションを構築します。これで、テストエクスプローラのフィルタをFullName: "UnitTests"のように指定できます。これはうまくいくようです。
      (私は検索名内の正規表現を使用できるように期待したいが、それはサポートされていないようです。)

      enter image description here

    +0

    これは、その間に仕事ができます! – Fenton

    +0

    すぐに機能のトッドのメモはすばらしいニュースです - しかし、これは私が 'FullName:" MyProject.Integration.Tests "'を統合テストと 'FullName:" MyProjectを見るためにフィルタリングすることができるので、ユニットテストを見るために "' 'テストしてください。更新のために+1 – Fenton

    3

    ユニットテキストエクスプローラで検索フィルタを使用できます。新しいテストExlorerで

    unit test explorer

    は、あなたがRTMなど「テスト結果」、「ファイル名」、...によってではなく、中にグループのテストが存在しない「TestCategory」でグループ/検索を構築することができます2012年に同梱テストエクスプローラから。しかし、VS2012ではTestCategory(TestCaseFilterを使用してVS 2012 RCで選択的な単体テストを実行)に基づいたコマンドラインとTeamBuildにフィルタがあります。

    VS devチームのメンバーから、彼らはこの欠落している機能の重要性を理解していました。これはバックログにあり、完全なビルド/アップデートで利用できるはずです。

    次のブログは、より詳細な情報を提供します:http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx

    0

    あなたがこの記事を見たことがありますか? How to: Group and Run Automated Tests Using Test Categories

    まだVS 2012で試したことはありませんが、それでも有効な可能性があります。私が見る限り、TFSへの参照はないので、これは通常のVSテストランナーを指しているはずです。

    +2

    私は、これはVS2012であるとは思いません。 VS2012同等品は、現在のコマンドラインを介してのみ利用可能であることを示唆している:http://msdn.microsoft.com/en-us/library/dd286683%28v=vs.110%29.aspx – Fenton

    3

    テストエクスプローラに適用できるフィルタがあります。特性: "UnitTest"このフィルタは、他を無視してTestCategory( "UnitTest")属性を持つテストのみを取得します。

    42

    TL; DRのバージョン:

    Test explorer showing -Trait:"CategoryName" filter

    他の回答には、回避策と、より最近のTraitsオプションの使用にコメントしています。しかし、具体的にどのように具体的には、形質のテストを除外を除外する方法はありません。そのためには、単にその形質とすべてのテストを除外します検索ボックスにフィルタ、例えば:

    -Trait:"DatabaseIntegration" 
    

    これを否定する-(マイナス)を使用します。

    FilterName:"Criteria" -FilterName:"SubsetCriteria"

    例えば、

    FullName:"MyClass" - FullName:"PerfTest"

    次の構文を使用し、フィルタの結果のサブセットを除外するに

    MSDN documentation on these featuresは以下の説明を持っていますその名前に "PerfTest"も含まれているテストを除いて、その名前に "MyClass"を含むすべてのテストを返します。

    1

    パーティーに少し遅れました。ソリューションですべての単体テストを実行しているだけで、すべての開発者が混乱したCodedUIに直面したのと同じ問題がありました。私の回避策はCodedUIプロジェクトのAssemblyInitializerに以下を追加することです:

    if(!ConfigurationManager.AppSettings["MachinesToRunCodedUI"].Split(',').Contains(Environment.MachineName)) 
         Assert.Inconclusive("CodedUI Tests are skipped."); 
    

    マシンはそのMachinesToRunCodedUIリストの一部である場合にのみ、それはCodedUIテストを実行します。

    関連する問題