4

是否有任何机制为单元测试提供 CancellationToken(或者可能是 [TestInitialize] 之类的属性),可以用来理解单元测试被取消?我找不到。

4

1 回答 1

3

理论上,应该可以使用您自己的测试扩展(派生自TestClassExtensionAttribute)来实现这一点,您可以使用它来代替标准[TestClass]属性。

这有点挑战性,因为它需要部署/注册您的测试扩展(阅读“扩展 Visual Studio 单元测试类型,第 1 部分”)。

这将使您可以访问该TestExecution.OnTestStopping事件。在事件处理程序中,您可以请求取消CancellationTokenSource.

CancellationTokenSource.Token如何使测试方法本身可用,这取决于您。例如,您可以使用System.AppDomain.CurrentDomain.GetData. 在这种情况下,您还需要处理TestExecution.BeforeTestInitialize和使用System.AppDomain.CurrentDomain.SetData存储信息,需要查找正确的CancellationTokenSource. 您可能需要维护一个TestContext-to-字典CancellationTokenSource,以确保您取消了正确的测试。

于 2014-07-25T12:05:42.537 回答