Visual Studio 測試工作

Azure Pipelines

您可以使用此工作來執行單元和功能測試 (Selenium、Appium、自動程式碼 UI 測試,以及使用 Visual Studio Test Runner 的其他) 。 除了 MSTest 測試之外,也可以執行具有 Visual Studio 測試介面卡(例如 xUnit、NUnit、Chutzpah)的測試架構。

.runsettings檔案中指定適當的目標 framework 值,即可執行以 .net core framework 為目標的測試。

您可以使用這項工作的第2版,在多個代理程式上散發測試。 如需詳細資訊,請參閱使用 Visual Studio 測試工作以平行方式執行測試

檢查必要條件

如果您使用 Windows 自我裝載代理程式,請確定您的電腦已安裝此先決條件:

要求

代理程式必須具有下列功能:

vstest

您可以透過兩種方式滿足 vstest 需求:

  1. Visual Studio 安裝在代理程式電腦上。

  2. 使用管線定義中的Visual Studio 測試平臺安裝程式工作。

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
選取測試使用
(必要) 測試元件: 使用此選項可指定一個或多個包含測試的測試元件。 您可以選擇性地指定篩選準則,只選取特定的測試。
測試計劃: 您可以使用這個選項,從測試計劃執行具有與其相關聯之自動化測試方法的測試。 若要深入瞭解如何將測試與測試案例工作專案產生關聯,請參閱 將自動化測試與測試案例產生關聯
測試回合: 當您要設定環境以 從測試計劃執行測試時,請使用此選項。 在持續整合/持續部署 (CI/CD) 管線中執行測試時,不應該使用此選項。
預設值:testAssemblies
testAssemblyVer2
測試檔案
(必要的) 從指定的檔案執行測試。 您可以分別指定和檔案來執行已排序的測試和 webtest .orderedtest.webtest 。 若要執行 .webtest ,需要 Visual Studio 2017 Update 4 或更新版本。 檔案路徑會相對於 [搜尋] 資料夾。 支援多行 minimatch 模式。 其他資訊
預設值:**\\*test*.dll\n!**\\*TestAdapter.dll\n!**\\obj\\**
testPlan
測試計劃
(必要) 選取包含具有自動化測試案例之測試套件的測試計劃。
testSuite
測試套件
(必要的) 選取一個或多個包含自動化測試案例的測試套件。 測試案例工作專案必須與自動化測試方法相關聯。 深入了解
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,請在 Installed by tools installer YAML 中使用 UI 或 toolsInstaller 中的選項。 請務必包含 ‘ Visual Studio 測試平臺安裝程式工作 ’ ,以從 NuGet 取得測試平臺。
vstestLocation
vstest.console.exe 的路徑
(選擇性) 指定 VSTest 的路徑。
runSettingsFile
設定檔案
(選用的) 路徑, runsettings 或要 testsettings 與測試搭配使用的檔案。從 Visual Studio 15.7 開始,建議將 .runsettings 用於所有類型的測試。 若要深入瞭解如何將 .testsettings 檔案轉換成 .runsettings 檔案,請參閱 本主題
overrideTestrunParameters
覆寫測試回合參數
(選擇性) 覆寫 .testsettings 檔之 .runsettings 檔案或屬性區段的 TestRunParameters 區段中定義的參數。
例如:-key1 value1 -key2 value2注意: 可以使用 Visual Studio 2017 Update 4 或更高版本,透過 TestCoNtext 存取 file 中指定的屬性
pathtoCustomTestAdapters
自訂測試介面卡的路徑
(選擇性的自訂測試介面卡) 目錄路徑。 系統會自動探索位於與測試元件相同之資料夾中的介面卡。
runInParallel
在多核心電腦上平行執行測試
(選擇性) 如果設定,測試將會平行利用電腦的可用核心來執行。 如果您在 .runsettings 檔中指定,這會覆寫 MaxCpuCount。 按一下 這裡 可深入瞭解如何以平行方式執行測試。
runTestsInIsolation
以隔離方式執行測試
(選擇性) 在隔離的進程中執行測試。 這可讓 vstest.console.exe 程式較不可能在測試中發生錯誤時停止,但測試的執行速度可能會變慢。 使用多重代理程式作業設定執行時,目前無法使用這個選項。
codeCoverageEnabled
已啟用程式碼涵蓋範圍
(選擇性) 從測試回合收集程式碼涵蓋範圍資訊。
otherConsoleOptions
其他主控台選項
(選擇性的) 其他可傳遞至的主控台選項 vstest.console.exe ,如下所vstest.console.exe述。 這些選項不受支援,並且會在使用代理程式作業的 多重代理程式 平行設定或使用 測試計劃 選項執行測試時,忽略這些選項。 您可以使用設定檔來指定這些選項。
distributionBatchType
批次測試
(選擇性) 批次是一組測試。 測試批次會在同一時間執行其測試,並針對批次發行結果。 如果工作執行所在的工作設定為使用多個代理程式,則每個代理程式都會挑選任何可用的測試批次,以平行方式執行。
根據測試和代理程式的數目: 根據參與測試回合的測試和代理程式數目來進行簡單批次處理。
過去的測試回合時間為基礎:此批次會考慮過去的執行時間來建立測試批次,讓每個批次的執行時間大約相等。
根據測試元件: 元件的測試會一起批次處理。」
預設值:basedOnTestCases
batchingBasedOnAgentsOption
批次選項
(選擇性的) 簡單批次處理,根據參與測試回合的測試和代理程式數目而定。 當批次大小自動決定時,每個批次都會包含 (total number of tests / number of agents) 測試。 如果指定了批次大小,每個批次都會包含指定數目的測試。
預設值:autoBatchSize
customBatchSizeValue
每一批次的測試數目
(必要) 指定批次大小
預設值:10
batchingBasedOnExecutionTimeOption
批次選項
(選擇性) 此批次會考慮過去的執行時間來建立測試批次,讓每個批次的執行時間大約相等。 快速執行的測試會一起進行批次處理,較長的執行測試可能屬於個別的批次。 當此選項搭配多重代理程式作業設定使用時,總測試時間會降至最低。
預設值:autoBatchSize
customRunTimePerBatchValue
每個批次的執行時間 (秒)
(必要) 指定每個批次的執行時間 (秒)
預設值:60
dontDistribute
複寫測試,而不是在作業中使用多個代理程式時發佈
(選擇性) 選擇此選項將不會在多代理程式作業中執行工作時,跨代理程式散發測試。
每個選取的測試 (s) 將會在每個代理程式上重複。
當代理程式作業設定為以沒有平行處理原則或使用多重設定選項執行時,此選項不適用。
預設值:False
testRunTitle
測試回合標題
(選擇性) 提供測試回合的名稱
platform
組建平臺
(應報告測試的選擇性) 組建平臺。 如果您已在組建工作中定義平臺的變數,請在這裡使用該變數。
configuration
建置組態
(選擇性) 要針對其報告測試的組建設定。 如果您已在組建工作中定義要設定的變數,請在這裡使用該變數。
publishRunAttachments
Upload 測試附件
(選擇性) 加入宣告/退出發行執行層級的附件。
預設值:true
failOnMinTestsNotRun
如果未執行最小數目的測試,則工作會失敗
(選擇性) 如果未執行最少的測試數目,請使用此選項來使工作失敗。 如果工作輸入或基礎測試介面卡相依性的任何變更只會導致所需的測試子集出現,這項功能就很有用。
預設值:False
minimumExpectedTests
最小測試數目
(選擇性) 指定應執行才能成功執行工作的測試數目下限。 測試回合總數會計算為通過、失敗和中止測試的總和。
預設值:1
diagnosticsEnabled
在發生嚴重失敗時收集 advanced diagnostics
(選擇性) 使用此選項來開啟診斷資料收集,以針對重大失敗(例如測試損毀)進行疑難排解。
核取此選項時,會產生順序 XML 檔案,並將其附加至測試回合。 順序檔案包含測試執行順序的相關資訊,以便找出可能的可能原因測試。
預設值:false
collectDumpOn
收集進程傾印並附加到測試回合報表
(選擇性) 使用此選項收集可用於進一步分析的迷你傾印。
僅限中止:只有在測試回合中止時,才會收集迷你傾印。
一律:無論測試回合是否完成,一律會收集迷你傾印。
永不:無論測試回合是否完成,都不會收集迷你傾印
rerunFailedTests
重新執行失敗的測試
(選擇性) 選取此選項將會重新執行所有失敗的測試,直到它們通過或達到最大嘗試次數為止。
預設值:False
rerunType
如果測試失敗超過指定的閾值,請勿重新執行
(選擇性) 使用這個選項可避免當失敗率超過指定的閾值時,重新執行測試。 這適用于任何環境問題導致大量失敗的情況。您可以 basedOnTestFailurePercentage 使用 basedOnTestFailureCount 將失敗的測試或失敗的測試數指定為臨界值。
預設值:basedOnTestFailurePercentage
rerunFailedThreshold
% 失敗
(選擇性) 使用這個選項可避免當失敗率超過指定的閾值時,重新執行測試。 這適用于任何環境問題導致大量失敗的情況
預設值:30
rerunFailedTestCasesMaxLimit
失敗的測試數目
(選擇性) 使用這個選項可避免在失敗的測試案例數目超過指定的限制時重新執行測試。 如果任何環境問題導致大量失敗,而且 rerunType 是 rerunFailedTestCasesMaxLimit,則適用此情況。
預設值:5
rerunMaxAttempts
最大嘗試次數
(選擇性) 指定失敗的測試應該重試的最大次數。 如果在達到最大嘗試次數之前測試通過,則不會再重新執行。
預設值:3

開放原始碼

此工作是GitHub 上的開放原始碼。 歡迎您提供意見反應和投稿。

常見問題集

如何使用 TestCase 做為資料來源來執行測試?

若要執行使用 TestCase 作為資料來源的自動化測試,需要下列各項:

  1. 代理程式機器上必須有 Visual Studio 2017.6 或更高版本。 Visual Studio 測試平臺安裝程式工作不能用來執行使用 TestCase 做為資料來源的測試。

  2. 建立已獲得 (完整) 的範圍工作專案授權的 PAT ” 。

  3. 加入名為 TestCaseAccessToken 的安全性群組建或發行變數,並將值設定為在上一個步驟中建立的 PAT。

我在執行資料驅動 xUnit 以及 NUnit 測試時,有一些工作選項遇到問題。 是否有已知的限制?

使用 xUnit 和 NUnit 測試架構的資料驅動測試有一些已知的限制,而且無法與下列工作選項搭配使用:

  1. 重新執行失敗的測試。

  2. 在多個代理程式和批次選項上散發測試。

  3. 測試影響分析

上述限制的原因是這些測試架構的介面卡如何探索和報告資料驅動測試。