2013-12-18 16 views

回答

3

你需要的接口都可以通過在Microsoft.VisualStudio.TestWindow.Interfaces.dll裝配MEF。

您需要通過MEF和[Import]IOperationState一個實例揭露您的分機,或使用IComponentModel接口(用於SComponentModel服務返回)訪問IOperationState。從那裏,您想要爲IOperationState.StateChanged事件添加事件處理程序,並查找State屬性以包含TestOperationStates.TestExecutionFinished標誌。

我非常抱歉缺少鏈接,但我在MSDN中找不到任何有關此信息。

編輯:關於兼容性的兩點評論。

  1. 這隻適用於Visual Studio 2012及更新版本。
  2. 在Visual Studio的兩個版本中,必要程序集(上面提到)具有不同的強名稱,並且在Visual Studio 2013中沒有bindingRedirect。這意味着您將被強制部署單獨的擴展名Visual Studio 2012和Visual Studio 2013,或者獲得關於動態加載擴展代碼的方式的「聰明」(後者遠遠超出了這個答案的範圍,但是我已經將它用於某些情況,如需要訪問版本的繼承邊距擴展特定的智能感知資源)。
+0

感謝您的答案。寫了一篇關於如何做到這一點的小貼子。 – vmg

3

感謝您的答案280Z28。通過使用應用程序對象的工作代碼DTE:

using System.ComponentModel.Composition; 
using Microsoft.VisualStudio.TestWindow.Extensibility; 
using Microsoft.VisualStudio.ComponentModelHost; 
using Microsoft.VisualStudio.Shell; 
using Microsoft.VisualStudio.TestTools.Execution; 

public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref Array custom) 
{    
    Microsoft.VisualStudio.OLE.Interop.IServiceProvider InteropServiceProvider = application as Microsoft.VisualStudio.OLE.Interop.IServiceProvider; 
    _ServiceProvider = new ServiceProvider(InteropServiceProvider); 
    _ComponentModel = (IComponentModel)_ServiceProvider.GetService(typeof(SComponentModel)); 
    _OperationState = _ComponentModel.GetService<IOperationState>(); 
    _OperationState.StateChanged += _OperationState_StateChanged; 
} 

void _OperationState_StateChanged(object sender, OperationStateChangedEventArgs e) 
{    
} 

也可以通過ITestsService訪問當前發現的測試。

_TestsService = _ComponentModel.GetService<Microsoft.VisualStudio.TestWindow.Extensibility.ITestsService>(); 

var GetTestTask = _TestsService.GetTests(); 
GetTestTask.ContinueWith(Task => 
{ 
    var DiscoveredTests = Task.Results.ToList(); 
}); 
+2

這還沒有完全回答OP的問題 – djv

+0

@Verdolino爲什麼不呢?在OperationState_StateChanged事件中,可以檢查e.State == TestOperationStates.TestExecutionFinished。 – JoanComasFdz

+0

@JoanComasFdz正好。答案中缺少這一點。 – djv

相關問題