MSTest中TestExecution类的目的是什么?

Dan*_*fer 11 .net unit-testing mstest

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

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

我如何获得这些活动的访问权限?

J. *_*hon 10

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

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

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

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

请注意,您还必须实现一个ITestMethodInvoker您应该能够从TetMethodInvokerContext.TestMethodInfo提供给该TestExtensionExecute.CreateTestMethodInvoker方法的属性创建的内容.