共用方式為


設定 MSTest

MSTest (Microsoft 測試架構) 是適用於 .NET 應用程式的測試架構。 它可讓您撰寫和執行測試,並提供與 Visual Studio 和 Visual Studio Code 測試總管、.NET CLI 和許多 CI 管線整合的測試套件。

MSTest 是完全支援、開放原始碼且跨平台的測試架構,可搭配 GitHub 上裝載且支援的所有 .NET 目標 (.NET Framework、.NET Core、.NET、UWP、WinUI 等) 運作。

Runsettings

.runsettings 檔案可用來設定單元測試的執行方式。 若要深入了解與平台相關的 runsettings 和組態,請參閱 VSTest runsettings 文件MSTest 執行器 runsettings 文件

MSTest 元素

下列 runsettings 項目可讓您設定 MSTest 的行為方式。

組態 預設
AssemblyCleanupTimeout 0 以全域方式指定要套用於每個組件清除方法執行個體的逾時。 在組件清除方法上指定的 [Timeout] 屬性會覆寫全域逾時。
AssemblyInitializeTimeout 0 以全域方式指定要套用於每個組件初始化方法執行個體的逾時。 在組件初始化方法上指定的 [Timeout] 屬性會覆寫全域逾時。
AssemblyResolution false 您可以在求解及執行單元測試時,指定額外組件的路徑。 例如,您可以針對與測試組件位於不同目錄的相依性組件,使用這些路徑。 若要指定路徑,請使用目錄路徑項目。 路徑可以包括環境變數。

<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>

此功能只有在使用 .NET Framework 目標時才會套用。
CaptureTraceOutput true 擷取來自將與目前執行中的測試相關聯的 Console.Write*Trace.Write*Debug.Write* API 的文字訊息。
ClassCleanupLifecycle EndOfClass 如果您想要在組件結尾進行類別清除,請將其設定為 EndOfAssembly。 (從 MSTest v4 開始不再支援,因為 EndOfClass 是預設且唯一的 ClassCleanup 行為)
ClassCleanupTimeout 0 以全域方式指定要套用於每個類別清除方法執行個體的逾時。 在類別清除方法上指定的 [Timeout] 屬性會覆寫全域逾時。
ClassInitializeTimeout 0 以全域方式指定要套用於每個類別初始化方法執行個體的逾時。 在類別初始化方法上指定的 [Timeout] 屬性會覆寫全域逾時。
DeleteDeploymentDirectoryAfterTestRunIsComplete true 若要在測試回合之後保留部署目錄,請將此值設定為 false
DeploymentEnabled true 如果您將此值設定為 false,就不會將您在測試方法中所指定的部署項目複製到部署目錄中。
DeployTestSourceDependencies true 一個值,指出是否要部署測試來源參考。
EnableBaseClassTestMethodsFromOtherAssemblies true 一個值,指出是否要從繼承測試類別的不同組件中,啟用從基底類別探索測試方法。
ForcedLegacyMode false 舊版 Visual Studio 中的 MSTest 配接器已進行過最佳化,因此更快速且更具延展性。 某些行為 (例如測試執行順序) 可能與舊版 Visual Studio 稍有出入。 將此值設定為 true,以使用較舊的測試配接器。

例如,如果您為單元測試指定 app.config 檔案,則可以使用此設定。

建議您考慮重構測試,以便使用較新的配接器。
MapInconclusiveToFailed false 如果測試完成,但狀態結果不明,則通常對應至 [測試總管] 中的已略過狀態。 如果您要讓結果不明的測試顯示為 [失敗],請將此值設定為 true
MapNotRunnableToFailed true 一個值,指出無法執行的結果是否對應至失敗的測試。
平行處理 用來設定平行處理設定:

背景工作角色:要用於平行處理的執行緒/背景工作角色數目,預設為目前電腦上的處理器數目

範圍:平行處理的範圍。 您可以將其設定為 MethodLevel。 根據預設,它是 ClassLevel

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
SettingsFile 您可以指定與此處的 MS 測試配接器一起使用的測試設定檔。 您也可以從設定功能表指定測試設定檔。

如果您指定這個值,也必須將 [ForcedlegacyMode] 設定為 [true]

<ForcedLegacyMode>true</ForcedLegacyMode>
TestCleanupTimeout 0 以全域方式指定要套用於每個測試清除方法執行個體的逾時。 在測試清除方法上指定的 [Timeout] 屬性會覆寫全域逾時。
TestInitializeTimeout 0 以全域方式指定要套用於每個測試初始化方法執行個體的逾時。 在測試初始化方法上指定的 [Timeout] 屬性會覆寫全域逾時。
TestTimeout 0 取得指定的全域測試案例逾時。
TreatClassAndAssemblyCleanupWarningsAsErrors false 若要將類別清除中的失敗視為錯誤,請將此值設定為 true
TreatDiscoveryWarningsAsErrors false 若要將測試探索警告報告為錯誤,請將此值設定為 [true]
ConsiderFixturesAsSpecialTests false 如果要在 Visual Studio 和 Visual Studio Code Test Explorer.trx 記錄中將 AssemblyInitializeAssemblyCleanupClassInitializeClassCleanup 顯示為個別項目,請將此值設定為 true

TestRunParameter 項目

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>

測試回合參數提供方法,定義可供在執行階段的測試使用的變數和值。 使用 MSTest TestContext.Properties 屬性存取參數:

private string _appUrl;
public TestContext TestContext { get; set; }

[TestMethod]
public void HomePageTest()
{
    string _appUrl = TestContext.Properties["webAppUrl"];
}

若要使用測試回合參數,請將公用 TestContext 屬性新增至您的測試類別。

.runsettings 檔案範例

下列 XML 顯示一般 .runsettings 檔案的內容。 複製此程式碼,並根據需求編輯。

檔案的每個項目都有預設值,因此為選擇性。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>

  <!-- Parameters used by tests at run time -->
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
  </TestRunParameters>

  <!-- MSTest -->
  <MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
  </MSTest>

</RunSettings>