2011-12-15 84 views
11

我找到了TestExecution這個類,它暴露了一些非常有用的事件。但是,除了MSDN的文檔外,我找不到它的參考,並且文檔沒有提供任何關於它如何使用的提示,也沒有提供任何提示,或者在測試運行期間如何獲得對實例的引用。MSTest中TestExecution類的用途是什麼?

用.NET Reflector查找也沒有幫助 - TestExecution由另一個類UnitTestExecution實現,它是內部的。我無法在任何Microsoft.VisualStudio.QualityTools。*庫中找到對任何類的任何其他引用,既無法以其他類的形式進一步實現,也無法作爲屬性類型引用。

我該如何獲得這些活動的訪問權限?

+0

看起來像一個抽象類,所以你可能必須從它派生並實現一些抽象方法/屬性。 – Bernard 2011-12-15 22:49:20

+0

不一定......我認爲框架更有可能使用抽象。由於它是一個公共類,而且由於UnitTestExecution不是,它似乎遵循暴露抽象的模式,而不是實現。通常,有一種方法可以獲得對抽象實例的引用(就像TestContext屬性一樣,TestContext也是一個抽象類),但是我一直無法找到它。 – 2011-12-16 00:25:13

回答

10

TestExecution實例在實現自定義TestExtensionExecution時提供給您。它提供了一個Initialize方法,您可以覆蓋該方法以訂閱測試事件。

這通常是MSTest中自定義測試屬性實現的一部分。

編輯 要創建自己的測試擴展,以創建一個新的屬性,從Microsoft.VisualStudio.TestTools.UnitTesting.TestClassExtensionAttribute派生,它是一個抽象類,要求您通過GetExtension()方法提供TestExtensionExecution開始。

應用您的屬性的測試方法之一,你應該能夠在測試過程中訂閱這些事件

注意(你由屬性返回TestExtensionExecution裏面執行),您還必須實現一個ITestMethodInvoker其您應該可以從TetMethodInvokerContext.TestMethodInfo屬性中創建TestExtensionExecute.CreateTestMethodInvoker方法。