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