本文是提供給為 Microsoft.Testing.Platform 建立自定義測試框架或擴充套件的開發者。
注意
完整範例程式碼請參閱 Microsoft 測試框架倉庫中的 TestingPlatformExamples 。
延伸點摘要
| 擴展點 | 進出流程 | 目標 |
|---|---|---|
| ITestFramework | 進行中 | 唯一強制的延期。 發現並執行測試。 |
| IDataConsumer | 進行中 | 訂閱並處理訊息匯流排的測試資料。 |
| ITestSessionLifetimeHandler | 進行中 | 在測試會話前後執行程式碼。 |
| ITestApplicationLifecycleCallbacks | 進行中 | 在測試主機的開始和最後執行程式碼。 |
| ICommandLineOptionsProvider | Both | 新增自訂命令列選項。 |
| ITestHostEnvironmentVariableProvider | 程序外 | 在測試主機開始前設定環境變數。 |
| ITestHostProcessLifetimeHandler | 程序外 | 外部觀察測試主機的過程。 |
內部處理與外部處理的擴充功能
擴展可分為兩類:
進程內擴充功能 會與測試框架同時執行於測試主機程序中。 請透過
builder.TestHost註冊:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHost.AddXXX(/* ... */);進程外擴充功能在一個獨立的進程中執行,以監控測試主機程序。 透過
builder.TestHostControllers註冊:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
當需要進行程序外擴展時:
- 你需要在測試主機開始前設定環境變數。
- 你需要在外部監控測試主機,因為使用者程式碼可能會當機或掛起程序。
當任何程序外的擴展被註冊時,平台會自動啟動第二個程序。
IExtension 介面
所有擴展點都繼承自 IExtension,該提供識別及選擇性加入/退出。
public interface IExtension
{
string Uid { get; }
string Version { get; }
string DisplayName { get; }
string Description { get; }
Task<bool> IsEnabledAsync();
}
-
Uid:擴充功能的唯一識別碼。 選擇一個獨特的數值以避免衝突。 -
Version:擴充功能的版本,使用 語意版本管理。 -
DisplayName:一個使用者友善的名稱,會出現在日誌和--info輸出中。 -
Description:出現在--info輸出中的描述。 -
IsEnabledAsync(): 返回false以排除本次會議的延期。 通常決策是基於設定或命令列選項。