是否有任何机制可以提供CancellationToken(或类似[TestInitialize]的属性)进行单元测试,可用于了解单元测试是否被取消?我找不到。
答案 0 :(得分: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
所需的信息。您可能需要使用TestContext
- 至 - CancellationTokenSource
字典,以确保您取消正确的测试。