4

是否有任何機制爲單元測試提供CancellationToken(或者可能是像[TestInitialize]這樣的屬性),它可以用來理解單元測試被取消?我找不到。MSTest消除機制

回答

1

從理論上講,應該可以使用您自己的測試擴展(得自TestClassExtensionAttribute)來實現此目的,您可以使用它來代替標準[TestClass]屬性。

這是有點具有挑戰性的,因爲它需要部署/註冊您的測試擴展名(請參閱"Extending the Visual Studio Unit Test Type, part 1")。

這將使您能夠訪問TestExecution.OnTestStopping事件。在事件處理程序中,您可以請求取消某個CancellationTokenSource的某個實例。

這取決於你如何使CancellationTokenSource.Token可用於測試方法本身。例如,你可以使用System.AppDomain.CurrentDomain.GetData。在這種情況下,您還需要處理TestExecution.BeforeTestInitialize並使用System.AppDomain.CurrentDomain.SetData來存儲信息,以查找正確的CancellationTokenSource。您可能需要主要使用TestContextCancellationTokenSource的字典,以確保您取消了正確的測試。