2017-08-10 3 views
1

NugetベースのテストランナーであるMachine.Specifications.Runner.VisualStudio、v2を使用して、ユニットテストがマシン仕様で記述されたコードベースがあります。 10を実行してテストを実行します。 Visual Studio(2015 & 2017)のコンテキストから正常に動作し、Traitによるフィルタリングは期待通りに機能します。しかし、テストアセンブリビルドステップを使用する場合、カテゴリフィルタを尊重するようには見えません。ビジュアルスタジオと比較してTFSビルドエージェントがテストアダプタを実行する方法に特別なものがありますか?TFS 2015のテストカテゴリフィルタvフィルタリングされていないmspecテストアダプタを使用した次のビルド

例テスト

[Subject(typeof(RetrieveConfiguration))] 
    [Tags(Categories.Manual)] 
    public class When_hitting_the_general_services_uri : SpecificationContext 
    { 
     private static TestResult result; 

     Establish context =() => 
     { 
      IServiceInfo serviceInfo = Substitute.For<IServiceInfo>(); 
      serviceInfo.Url = ""; 
      environment.GetService("Confiugration", "Retrieve").Returns(serviceInfo); 
      x509Manager.LoadFromSignature(ValidSignature).Returns(LoadFromMachine(ValidSignature)); 
     }; 

     Because of =() => error = Catch.Exception(() => result = sut.Execute(new Uri("https://myproductionuri/retrieve"), environment)); 

     It should_have_the_succeeded =() => result.Result.ShouldEqual(StepResult.Success); 
    } 

ビルドステップの設定 TFS vNext build test step

ログイン

... 
2017-08-10T20:49:44.8717852Z ##[debug]Calling Invoke-VSTest for all test assemblies 
2017-08-10T20:49:44.9655216Z Working folder: E:\B39\BA78\WS\18 
2017-08-10T20:49:44.9655216Z Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "E:\B39\BA78\WS\18\s\Src\Test\Verifier.Reporting.Azure.Storage.Spec\bin\Release\Verifier.Reporting.Azure.Store.Spec.dll" /TestCaseFilter:"TestCategory=ContinuousIntegration" /EnableCodeCoverage /logger:trx /TestAdapterPath:"E:\B39\BA78\WS\18\s" 
2017-08-10T20:49:45.1999042Z Microsoft (R) Test Execution Command Line Tool Version 14.0.25420.1 
2017-08-10T20:49:45.1999042Z Copyright (c) Microsoft Corporation. All rights reserved. 
2017-08-10T20:49:45.5592884Z Starting test execution, please wait... 
2017-08-10T20:49:56.8721150Z Information: Machine Specifications Visual Studio Test Adapter - Executing tests in E:\B39\BA78\WS\18\s\Src\Test\Verifier.Reporting.Azure.Storage.Spec\bin\Release\Verifier.Reporting.Azure.Store.Spec.dll 
2017-08-10T20:50:01.5285749Z Passed Verifier.Reporting.Azure.Store.Spec.When_publishing_a_report.should_have_succeeded 
... 

アップデートを構築8/25 - ないある統合テストを打つとき Viewing tests in VS Test Explorer without any filtering

注意をフィルタリングすることなく、要求されたスクリーンショットとフィードバック

テストExplorerを加え合計16回の試験があり、始まるものを示していますビルドエージェントのコンテキスト内で実行されることが期待されます。

カテゴリ Filtering test using category in VS Test Explorer

にフィルタリングをテストエクスプローラ試験は、それがテストの実行からドロップされた要求されたタグを持っていなかったので、試験の総数は16から14に減少しました。

実行vs2015は、Visual Studioの外部でテストを実行しているためのよう Screen shot of running vstest.console.exe on dev machine

をvstest.console.exe、テストランナーは一方で、私のdevのマシン上でテストアダプタをロードする問題が発生しているように思われますアダプタはVisual Studioとビルドエージェントで正常に動作します。

+0

関連するエラーメッセージをビルドログで共有できますか? –

+0

@ Patrick-MSFT単体テストの実行についてビルドログの一部を追加しました。ビルドの一部としてエラーは発生せず、指定されたTestCategory \ Traitでフィルタされていないテストの実行だけがフィルタに適用されます。テストは、単にビルドエージェントホストで利用できないリソースを参照するため、渡されません。私たちはテストの周りにデバッグプラグマを追加して問題を解決しましたが、それは理想的な解決策ではありません。 – Tedford

+0

ローカルVSを使用してテストをフィルタリングするときに、どの引数が渡されますか? TFS VStestのテストフィルタ基準は、 'vstest.console.exe'のコンソールオプション'/TestCaseFilter'と同じように動作します。上記のテストコードには、対応するカテゴリ情報が含まれていませんでした。 VStestタスクの* Test Filter Criteria *の詳細については、このブログを参照してください。http://www.dotnetcatch.com/2016/03/11/vststfs-visual-studio-test-task-filter-criteria/ –

答えて

0

vstestタスクは、vstest.console.exeを使用してテストを実行しています。 TFS VStestのテストフィルタ基準は、コンソールオプション/TestCaseFilterの場合と同じように動作し、vstest.console.exeです。以上により

"TestCategory=ContinuousIntegration" 

、私たちはコマンドライン(vstest.console.exe)を使用してテストを実行する場合、私たちは、どの手段にマッチした名前を指定する必要があり、あなたのコードでは、このようなTestCategory名前を見ていません少なくともテストメソッドコードの上にTestCategory属性の名前を付けます。 i。E、私のテストメソッドのコード:

[TestCategory("nine"), TestMethod()] 
    public void TestMethod1() 
    { 
     Assert.AreEqual(1, 1); 
    } 

は、私は、コマンドラインに以下のコードを使用して、それを実行する必要があります。

Vstest.console.exe UnitTestvstsada.dll /TestCaseFilter:TestCategory=nine 

それが正常にテストをフィルタリングし、TFSのビルドで同じ結果を得ることができます。

フィルタについては、のテストエクスプローラには、テストをフィルタするオプションはありません。実際にはフィルタではない連続的な統合を構成するだけです。もしあなたが気にしないなら、どのようにフィルター特性を使用したかを親切に示してください:Visual Studioを使ってテストを実行するテストでContinuousIntegration。 TFS2015のビルドエージェントでTestCategory=ContinuousIntegrationと等価ではない継続的インテグレーション:フィルタの特性を使用して

enter image description here

怖いです。

+0

テストエクスプローラでフィルタリングし、vstest.console.exeを使用して実行しようとすると、要求されたスクリーンショットで質問を更新しました – Tedford

関連する問題