Visual Studio テスト タスク

Azure DevOps Services

このタスクを使用して、Visual Studio テスト ランナーを使用して単体テストと機能テスト (Selenium、Appium、コード化された UI テストなど) を実行します。 MSTest ベースのテストと共に、xUnit、NUnit、Chutzpah などの Visual Studio テスト アダプターを持つテスト フレームワークも実行できます。

.runsettings ファイルで適切なターゲット フレームワーク値を指定することで、ターゲットの .NET Core フレームワークを実行できることをテストします。

テストは、このタスクのバージョン 2 を使用して複数のエージェントに配布できます。 詳細については、「 Visual Studio テスト タスクを使用してテストを並列で実行する」を参照してください。

前提条件を確認する

Windows セルフホステッド エージェントを使用している場合は、コンピューターに次の前提条件がインストールされていることを確認します。

確認要求

エージェントには、次の機能が必要です。

vstest

vstest の需要は、次の 2 つの方法で満たすことができます。

  1. Visual Studio がエージェント コンピューターにインストールされます。

  2. パイプライン定義で Visual Studio Test Platform Installer タスク を使用する。

YAML スニペット

# Visual Studio Test
# Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).
- task: VSTest@2
  inputs:
    #testSelector: 'testAssemblies' # Options: testAssemblies, testPlan, testRun
    #testAssemblyVer2: | # Required when testSelector == TestAssemblies
    #  **\*test*.dll
    #  !**\*TestAdapter.dll
    #  !**\obj\** 
    #testPlan: # Required when testSelector == TestPlan
    #testSuite: # Required when testSelector == TestPlan
    #testConfiguration: # Required when testSelector == TestPlan
    #tcmTestRun: '$(test.RunId)' # Optional
    #searchFolder: '$(System.DefaultWorkingDirectory)' 
    #testFiltercriteria: # Optional
    #runOnlyImpactedTests: False # Optional
    #runAllTestsAfterXBuilds: '50' # Optional
    #uiTests: false # Optional
    #vstestLocationMethod: 'version' # Optional. Options: version, location
    #vsTestVersion: 'latest' # Optional. Options: latest, 16.0, 15.0, 14.0, toolsInstaller
    #vstestLocation: # Optional
    #runSettingsFile: # Optional
    #overrideTestrunParameters: # Optional
    #pathtoCustomTestAdapters: # Optional
    #runInParallel: False # Optional
    #runTestsInIsolation: False # Optional
    #codeCoverageEnabled: False # Optional
    #otherConsoleOptions: # Optional
    #distributionBatchType: 'basedOnTestCases' # Optional. Options: basedOnTestCases, basedOnExecutionTime, basedOnAssembly
    #batchingBasedOnAgentsOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customBatchSize
    #customBatchSizeValue: '10' # Required when distributionBatchType == BasedOnTestCases && BatchingBasedOnAgentsOption == CustomBatchSize
    #batchingBasedOnExecutionTimeOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customTimeBatchSize
    #customRunTimePerBatchValue: '60' # Required when distributionBatchType == BasedOnExecutionTime && BatchingBasedOnExecutionTimeOption == CustomTimeBatchSize
    #dontDistribute: False # Optional
    #testRunTitle: # Optional
    #platform: # Optional
    #configuration: # Optional
    #publishRunAttachments: true # Optional
    #failOnMinTestsNotRun: false # Optional
    #minimumExpectedTests: '1' # Optional
    #diagnosticsEnabled: false # Optional
    #collectDumpOn: 'onAbortOnly' # Optional. Options: onAbortOnly, always, never
    #rerunFailedTests: False # Optional
    #rerunType: 'basedOnTestFailurePercentage' # Optional. Options: basedOnTestFailurePercentage, basedOnTestFailureCount
    #rerunFailedThreshold: '30' # Optional
    #rerunFailedTestCasesMaxLimit: '5' # Optional
    #rerunMaxAttempts: '3' # Optional

引数

引数 説明
testSelector
を使用してテストを選択する
(必須) テスト アセンブリ: このオプションを使用して、テストを含む 1 つ以上のテスト アセンブリを指定します。 必要に応じて、フィルター条件を指定して、特定のテストのみを選択できます。
テスト計画: 自動テスト メソッドが関連付けられているテスト計画からテストを実行するには、このオプションを使用します。 テストをテスト ケース作業項目に関連付ける方法の詳細については、「自動テストと テスト ケースの関連付け」を参照してください。
テストの実行: テスト 計画からテストを実行する環境を設定する場合は、このオプションを使用します。 このオプションは、継続的インテグレーション/継続的配置 (CI/CD) パイプラインでテストを実行する場合は使用しないでください。
既定値:testAssemblies
testAssemblyVer2
テスト ファイル
(必須)指定したファイルからテストを実行します。 順序付けされたテストと Web テストは、それぞれファイルと.webtestファイルを.orderedtest指定して実行できます。 実行 .webtestするには、Visual Studio 2017 Update 4 以降が必要です。 ファイル パスは、検索フォルダーに対する相対パスです。 複数行のミニマッチ パターンをサポートします。 その他の情報
既定値:**\\*test*.dll\n!**\\*TestAdapter.dll\n!**\\obj\\**
testPlan
テスト計画
(必須)自動テスト ケースを含むテスト スイートを含むテスト 計画を選択します。
testSuite
テスト スイート
(必須)自動テスト ケースを含む 1 つ以上のテスト スイートを選択します。 テスト ケースの作業項目は、自動テスト メソッドに関連付ける必要があります。 詳細については、こちらを参照してください
testConfiguration
テスト構成
(必須)[テスト構成] を選択します。
tcmTestRun
テストの実行
(省略可能)テスト実行ベースの選択は、 テスト計画から自動テスト実行をトリガーするときに使用されます。 このオプションは、CI/CD パイプラインでのテストの実行には使用できません。
searchFolder
検索フォルダー
(必須)テスト アセンブリを検索するフォルダー。
testFiltercriteria
フィルター条件をテストする
(省略可能)テスト アセンブリからテストをフィルター処理するための追加の条件。
(例: Priority=1|Name=MyTestMethod)。 詳細情報
runOnlyImpactedTests
影響を受けたテストのみを実行する
(省略可能)コードの変更を検証するために必要なテストのみを自動的に選択して実行します。 詳細情報
runAllTestsAfterXBuilds
すべてのテストを実行するビルドの数
(省略可能)すべてのテストを自動的に実行するビルドの数。 テスト影響分析では、テスト ケースとソース コード間のマッピングが格納されます。 すべてのテストを定期的に実行してマッピングを再生成することをお勧めします。
uiTests
テスト ミックスに UI テストが含まれている
(省略可能)UI テストを実行するには、エージェントが自動ログオンが有効になっている 対話型モードで実行 するように設定されていることを確認します。 ビルド/リリースをキューに入れる前に、対話形式で実行するようにエージェントを設定する必要があります。 このチェック ボックスをオンにしても、エージェントは対話モードで自動的に構成されません。 タスクのこのオプションは、障害を回避するためにエージェントを適切に構成するためのリマインダーとしてのみ機能することです。 VS 2015 および 2017 プールのホストされた Windows エージェントを使用して、UI テストを実行できます。
vstestLocationMethod
を使用してテスト プラットフォームを選択する
(省略可能)使用するテスト プラットフォームを指定します。
vsTestVersion
テスト プラットフォームのバージョン
(省略可能)使用する Visual Studio テストのバージョン。 最新のバージョンを指定すると、インストール内容に応じて Visual Studio 2017 または Visual Studio 2015 が選択されます。 Visual Studio 2013はサポートされていません。 エージェントで Visual Studio を必要とせずにテストを実行するには、YAML の UI または toolsInstaller のオプションを使用 Installed by tools installer します。 NuGet からテスト プラットフォームを取得するには、必ず "Visual Studio Test Platform Installer" タスクを含めてください。
vstestLocation
vstest.console.exeへのパス
(省略可能)VSTest へのパスを指定します。
runSettingsFile
設定ファイル
(省略可能) runsettings テストで使用するパスまたは testsettings ファイル。Visual Studio 15.7 以降では、すべての種類のテストに runsettings を使用することをお勧めします。 .testsettings ファイルから .runsettings ファイルへの変換の詳細については、 このトピックを参照してください。
overrideTestrunParameters
テスト実行パラメーターをオーバーライドする
(省略可能)runsettings ファイルの TestRunParameters セクションまたは testsettings ファイルの Properties セクションで定義されているパラメーターをオーバーライドします。
(例: -key1 value1 -key2 value2)。 手記: ファイルで testsettings 指定されたプロパティは、Visual Studio 2017 Update 4 以降を使用して TestContext 経由でアクセスできます
pathtoCustomTestAdapters
カスタム テスト アダプターへのパス
(省略可能)カスタム テスト アダプターへのディレクトリ パス。 テスト アセンブリと同じフォルダーに存在するアダプターが自動的に検出されます。
runInParallel
マルチコア マシンでテストを並列で実行する
(省略可能)設定した場合、テストはマシンの使用可能なコアを利用して並列で実行されます。 これにより、runsettings ファイルで指定されている場合、MaxCpuCount がオーバーライドされます。 テストの並列実行方法の詳細については、 ここをクリックしてください
runTestsInIsolation
分離してテストを実行する
(省略可能)分離されたプロセスでテストを実行します。 これにより、 vstest.console.exe テストのエラーでプロセスが停止される可能性は低くなりますが、テストの実行速度が低下する可能性があります。 このオプションは、現在、マルチエージェント ジョブ設定で実行する場合は使用できません。
codeCoverageEnabled
コード カバレッジが有効
(省略可能)テストの実行からコード カバレッジ情報を収集します。
otherConsoleOptions
その他のコンソール オプション
(省略可能)ここに記載されているように、渡vstest.console.exeすことができるその他のコンソール オプション。 これらのオプションはサポートされておらず、エージェント ジョブの マルチ エージェント 並列設定を使用してテストを実行するとき、または テスト 計画 オプションを使用してテストを実行する場合は無視されます。 オプションは、代わりに設定ファイルを使用して指定できます。
distributionBatchType
バッチ テスト
(省略可能)バッチはテストのグループです。 テストのバッチは同時にテストを実行し、結果はバッチに対して発行されます。 タスクが実行されるジョブが複数のエージェントを使用するように設定されている場合、各エージェントは、並列で実行するテストの使用可能なバッチを取得します。
テストとエージェントの数に基づいて次の手順を実行します。 テスト実行に参加しているテストとエージェントの数に基づく単純なバッチ処理。
テストの過去の実行時間に基づく: このバッチ処理では、過去の実行時間を考慮して、各バッチの実行時間がほぼ等しくなるようにテストのバッチを作成します。
テスト アセンブリに基づく: アセンブリからのテストは一緒にバッチ処理されます。
既定値:basedOnTestCases
batchingBasedOnAgentsOption
バッチ オプション
(省略可能)テスト実行に参加しているテストとエージェントの数に基づく単純なバッチ処理。 バッチ サイズが自動的に決定されると、各バッチにテストが (total number of tests / number of agents) 含まれます。 バッチ サイズを指定すると、各バッチに指定された数のテストが含まれます。
既定値:autoBatchSize
customBatchSizeValue
バッチあたりのテスト数
(必須)バッチ サイズを指定する
既定値:10
batchingBasedOnExecutionTimeOption
バッチ オプション
(省略可能)このバッチ処理では、過去の実行時間を考慮して、各バッチの実行時間がほぼ等しくなるようにテストのバッチを作成します。 クイック実行テストは一緒にバッチ処理されますが、実行時間の長いテストは別のバッチに属している可能性があります。 このオプションをマルチエージェント ジョブ設定と共に使用すると、テスト時間の合計が最小に短縮されます。
既定値:autoBatchSize
customRunTimePerBatchValue
バッチあたりの実行時間 (秒)
(必須)バッチあたりの実行時間 (秒) を指定する
既定値:60
dontDistribute
ジョブで複数のエージェントが使用されている場合に配布するのではなく、テストをレプリケートする
(省略可能)このオプションを選択しても、タスクがマルチエージェント ジョブで実行されている場合、エージェント間でテストは分散されません。
選択した各テストが各エージェントで繰り返されます。
このオプションは、並列処理なしで、または複数構成オプションを使用して実行するようにエージェント ジョブが構成されている場合は適用されません。
既定値:False
testRunTitle
テストの実行タイトル
(省略可能)テスト実行の名前を指定する
platform
プラットフォームを構築する
(省略可能)テストを報告するプラットフォームを構築します。 ビルド タスクでプラットフォームの変数を定義している場合は、ここでこれを使用します。
configuration
[ビルド構成]
(省略可能)テストを報告する必要があるビルド構成。 ビルド タスクで構成用の変数を定義している場合は、ここでこれを使用します。
publishRunAttachments
テスト添付ファイルをアップロードする
(省略可能)実行レベルの添付ファイルの発行をオプトイン/アウトします。
既定値:true
failOnMinTestsNotRun
テストの最小数が実行されていない場合はタスクを失敗する
(省略可能)このオプションを使用して、テストの最小数が実行されていない場合にタスクを失敗させます。 これは、タスク入力または基になるテスト アダプターの依存関係に対する変更によって、目的のテストのサブセットのみが見つかる場合に役立ちます。
既定値:False
minimumExpectedTests
テストの最小数
(省略可能)タスクを成功させるために実行する必要があるテストの最小数を指定します。 実行されたテストの合計数は、合格したテスト、失敗したテスト、および中止されたテストの合計として計算されます。
既定値:1
diagnosticsEnabled
致命的な障害が発生した場合の高度な診断を収集する
(省略可能)このオプションを使用して、診断データの収集を有効にして、テスト クラッシュなどの致命的なエラーのトラブルシューティングを行います。
このオプションをオンにすると、シーケンス XML ファイルが生成され、テスト実行にアタッチされます。 シーケンス ファイルには、潜在的に原因となるテストを識別できるように、テストが実行されたシーケンスに関する情報が含まれています。
既定値:false
collectDumpOn
プロセス ダンプを収集し、テスト実行レポートにアタッチする
(省略可能)さらに分析するために使用できるミニダンプを収集するには、このオプションを使用します。
中止時のみ:テストの実行が中止された場合にのみ、ミニダンプが収集されます。
Always: テストの実行が完了したかどうかに関係なく、ミニダンプは常に収集されます。
なし: テストの実行が完了したかどうかに関係なく、ミニダンプは収集されません
rerunFailedTests
失敗したテストを再実行する
(省略可能)このオプションを選択すると、失敗したテストが成功するか、最大試行回数に達するまで再実行されます。
既定値:False
rerunType
テストエラーが指定したしきい値を超えた場合は再実行しない
(省略可能)失敗率が指定したしきい値を超えたときにテストを再実行しないようにするには、このオプションを使用します。 これは、環境の問題によって大規模な障害が発生する場合に適用されます。basedOnTestFailureCount を使用して basedOnTestFailurePercentage 、失敗したテストの失敗率をしきい値として指定できます。
既定値:basedOnTestFailurePercentage
rerunFailedThreshold
% エラー
(省略可能)失敗率が指定したしきい値を超えたときにテストを再実行しないようにするには、このオプションを使用します。 これは、環境の問題によって大規模な障害が発生する場合に適用されます
既定値:30
rerunFailedTestCasesMaxLimit
失敗したテストの数
(省略可能)失敗したテスト ケースの数が指定した制限を超えた場合にテストを再実行しないようにするには、このオプションを使用します。 これは、環境の問題によって大規模なエラーが発生し、rerunType が rerunFailedTestCasesMaxLimit である場合に適用されます。
既定値:5
rerunMaxAttempts
最大試行回数
(省略可能)失敗したテストを再試行する最大回数を指定します。 最大試行回数に達する前にテストが成功した場合、それ以上再実行されません。
既定値:3

オープン ソース

このタスクは GitHub でオープンソース。 フィードバックと投稿をお待ちしております。

よく寄せられる質問

TestCase をデータ ソースとして使用するテストを実行するにはどうすればよいですか?

TestCase をデータ ソースとして使用する自動テストを実行するには、次のものが必要です。

  1. エージェント コンピューターに Visual Studio 2017.6 以降が必要です。 Visual Studio Test Platform Installer タスクを使用して、TestCase をデータ ソースとして使用するテストを実行することはできません。

  2. スコープ "Work Items (full)" に対して承認されている PAT を作成します。

  3. 前の手順で作成した PAT に値を設定して、Test.TestCaseAccessToken というセキュリティで保護されたビルドまたはリリース変数を追加します。

一部のタスク オプションでデータドリブン xUnit テストと NUnit テストを実行するときに問題が発生しています。 既知の制限はありますか?

xUnit テスト フレームワークと NUnit テスト フレームワークを使用するデータ ドリブン テストには既知の制限事項があり、次のタスク オプションでは使用できません。

  1. 失敗したテストを再実行します。

  2. 複数のエージェントとバッチ 処理オプションに対するテストの配布。

  3. 影響の分析をテストします。

上記の制限は、これらのテスト フレームワークのアダプターがデータドリブン テストを検出して報告する方法が原因です。

VsTest タスクは、一度に複数のターゲット フレームワークを対象とするテストの実行をサポートしていますか?

VsTest タスクでは、 vstest プラットフォーム 側からの制限であるため、複数のターゲット フレームワークを一度にターゲットとするテストの実行はサポートされていません。 複数のターゲット フレームワークに属するテストを実行する場合は、特定のフレームワークを対象とする dll のセットごとに 1 つずつ、vstest タスクの複数のインスタンスが必要になります。