我找到了TestExecution类,它暴露了一堆非常有用的事件。但是,除了MSDN的文档之外,我找不到对它的引用,并且文档没有提供任何关于它如何使用的提示,或者我如何在测试运行期间获得对实例的引用。 / p>
使用.NET Reflector查看也没有帮助 - TestExecution
由另一个类UnitTestExecution
实现,它是内部的。我无法在任何Microsoft.VisualStudio.QualityTools。*库中找到任何其他类的引用,既不是进一步实现的形式,也不是任何其他类中的属性类型引用。
我如何获得对这些事件的访问权?
答案 0 :(得分:10)
在实施自定义TestExecution
时,会为您提供TestExtensionExecution
个实例。它提供了Initialize方法,您可以覆盖该方法以订阅测试事件。
这通常是MSTest中自定义测试属性实现的一部分。
修改强>
要创建自己的测试扩展,请首先创建一个派生自Microsoft.VisualStudio.TestTools.UnitTesting.TestClassExtensionAttribute
的新属性,这是一个抽象类,要求您通过TestExtensionExecution
方法提供GetExtension()
。
将您的属性应用于您的某个测试方法,您应该能够在测试期间订阅这些事件(在属性返回的TestExtensionExecution
实现中)
请注意,您还必须实现ITestMethodInvoker
,您应该可以从TetMethodInvokerContext.TestMethodInfo
方法提供的TestExtensionExecute.CreateTestMethodInvoker
属性中创建该文件。