MSTest中TestExecution类的目的是什么?

时间:2011-12-15 21:32:15

标签: .net unit-testing mstest

我找到了TestExecution类,它暴露了一堆非常有用的事件。但是,除了MSDN的文档之外,我找不到对它的引用,并且文档没有提供任何关于它如何使用的提示,或者我如何在测试运行期间获得对实例的引用。 / p>

使用.NET Reflector查看也没有帮助 - TestExecution由另一个类UnitTestExecution实现,它是内部的。我无法在任何Microsoft.VisualStudio.QualityTools。*库中找到任何其他类的引用,既不是进一步实现的形式,也不是任何其他类中的属性类型引用。

我如何获得对这些事件的访问权?

1 个答案:

答案 0 :(得分:10)

在实施自定义TestExecution时,会为您提供TestExtensionExecution个实例。它提供了Initialize方法,您可以覆盖该方法以订阅测试事件。

这通常是MSTest中自定义测试属性实现的一部分。

修改 要创建自己的测试扩展,请首先创建一个派生自Microsoft.VisualStudio.TestTools.UnitTesting.TestClassExtensionAttribute的新属性,这是一个抽象类,要求您通过TestExtensionExecution方法提供GetExtension()

将您的属性应用于您的某个测试方法,您应该能够在测试期间订阅这些事件(在属性返回的TestExtensionExecution实现中)

请注意,您还必须实现ITestMethodInvoker,您应该可以从TetMethodInvokerContext.TestMethodInfo方法提供的TestExtensionExecute.CreateTestMethodInvoker属性中创建该文件。