2012-02-20 17 views
7

私は、継続的な統合ビルドからいくつかのテストを除外したいと思いますが、私はそれを行う方法を見つけていません。tfsビルドからのテストの除外

私が試したことの1つは、これらのテストの優先順位を-2に設定し、次に最小テスト優先度= -1を指定したビルドでしたが、まだそれらのテストを実行します。

ご協力いただければ幸いです。

+0

あなたのテスターは何ですか? MSTest、NUnit、なにか(?) – pantelif

答えて

9

説明されている「テストリスト」を使用する代わりに、「テストカテゴリ」メソッドを使用する必要があります。テストリスト&のVSMDI機能はVisual Studio 2010で廃止されましたが、今後のバージョンのVisual Studioではこの機能が完全に削除される可能性があります。

あなたはこのブログの記事をチェックアウトし、特にあなたの自動ビルドプロセスをテストカテゴリを使用する方法についていくつかのより多くの情報が欲しい場合:http://www.edsquared.com/2009/09/25/Test+Categories+And+Running+A+Subset+Of+Tests+In+Team+Foundation+Server+2010.aspx

また!(感嘆符を指定することで実行しているからテストカテゴリを除外することができますポイント名)の文字をカテゴリ名の前に追加して、フィルタをさらに定義します。

+0

私のCIビルドでは、 "!Integration&!Load" – felickz

3

MSTestを使用している場合は、継続的な統合に必要なテスト用にTest Listを作成できます。

+0

私はこの機能について知らなかった。それは新しい可能性の世界を開きます。ありがとう! – Yag

+0

これは、TFS 2008チームビルドでこれを行う方法については、samleビルドの設定については、私のポストを参照してください。 TFS 2010の場合、ビルド定義はワークフローベースですが、原則は同じです。 – eFloh

+2

FYI - .VSMDIを使用した "テストリスト"アプローチは廃止され、もう使用することは推奨されていません。代わりに、MSTestのテストカテゴリ機能を使用する必要があります。 Microsoftは、Visual Studioの将来のバージョンでテストリスト機能を完全に削除する可能性があります。あなたが興味を持っているなら、ここにいくつかの情報があります:http://www.edsquared.com/2009/09/25/Test+Categories+And+Running+A+Subset+Of+Tests+In+Team+Foundation+ Server + 2010.aspx –

0

私の好みはテストリストを使用していますが、vsmdiファイルのマージ/編集を発行している人もいます...別の解決方法があり、パターンマッチを使用して適切なDLL内のすべてのテストを実行します。

2

MSTestを使用すると、2つのテストプロジェクト(アセンブリ)を作成し、テスト用に使用するビルド設定で1つだけ指定することができます。 MSBuildでは、これが行く方法でした。新しいWFベースのビルド定義については、私は現在手元にサンプルを持っていない:

<ItemGroup> 
    <!-- TEST ARGUMENTS 
    If the RunTest property is set to true then the following test arguments will be used to run 
    tests. Tests can be run by specifying one or more test lists and/or one or more test containers. 

    To run tests using test lists, add MetaDataFile items and associated TestLists here. Paths can 
    be server paths or local paths, but server paths relative to the location of this file are highly 
    recommended: 

     <MetaDataFile Include="$(BuildProjectFolderPath)/HelloWorld/HelloWorld.vsmdi"> 
      <TestList>BVT1;BVT2</TestList> 
     </MetaDataFile> 

    To run tests using test containers, add TestContainer items here: 

     <TestContainer Include="$(OutDir)\AutomatedBuildTests.dll" /> 
     <TestContainer Include="$(SolutionRoot)\TestProject\WebTest1.webtest" /> 
     <TestContainer Include="$(SolutionRoot)\TestProject\LoadTest1.loadtest" /> 

    Use %2a instead of * and %3f instead of ? to prevent expansion before test assemblies are built 
    --> 
</ItemGroup> 

<PropertyGroup> 
    <RunConfigFile>$(SolutionRoot)\LocalTestRun.testrunconfig</RunConfigFile> 
</PropertyGroup> 

ヒント:一般的なビルド定義を使用するには、我々はすべて私たちのテスト・プロジェクト「AutomatedBuildTests」、すなわち名前なしありソリューションの違い。したがって、ビルド定義は、常に正しいテストセットを実行する既存のビルド定義に含めることができます(または共通のビルド定義に含めることもできます)。テストアセンブリが存在するときにのみビルド定義がテストを実行できるようにするには、 "if exists"チェックを追加するのは簡単な作業です。この定義を使用するすべてのビルドでテストが絶対的に必要なので、テストアセンブリが見つからないときにビルドエラーを取得するために、これを使用しません。

0

Visual Studio 2012以降では、Test case filter設定を使用してビルド定義を構成できます。

この設定は、ビルド定義の一部です。 ビルド定義を開き、Processタブにナビゲートします。セクション3. Testでは、複数のテストソースを定義することができます。各テストソースについて、Test case filterを指定することができます。

あなたは、このMSDNの記事で詳細を見つけることができます。Running selective unit tests in VS 2012 RC using TestCaseFilter

私はこの記事からサポートされる演算子といくつかの例をコピーした:RCでサポート

演算子は以下のとおりです。

1。 =(等しい)

2.!=(等しくない)

3〜(含まれているか、文字列値のためにのみサブストリング)

4. &(と)

5 | (又は)

6()(グループ化paranthesis)

Expresssionは、任意の有効な論理条件として、これらの演算子を使用して作成することができます。 &(および)は、より高い を超えています。 (または)式を評価します。

など。
"TestCategory = NAR |優先順位= 1" "!所有者=ビクラム& TestCategory = UI" "FullyQualifiedName〜NameSpace.Class"
「(TestCategory = UI &(優先度= 1 |!優先= 2))| (TestCategory = UI &優先順位= 1)」

別の可能性は、他のビルド定義の一部(すなわち、より多くのまたはより少ない)テストソース内の1つのビルド定義にいくつかのテストソースを持っているだろう。

関連する問題