1

Я создал проект интеграции для тестирования VS Extension. Если я запускаю тесты из среды Visual Studio, все тесты выполняются просто отлично, и каждый метод создает новую среду VS IDE. Методы испытаний отмечены следующие признаки:Как разместить VS IDE во время теста интеграции через MSTest?

[HostType("VS IDE")] 
[TestMethod] 
public void TestWhateverMethod() { ... } 

Однако, если я пытаюсь автоматизировать тесты и запускать их из командной строки с помощью MSTest (или VSTest) я получил следующее сообщение об ошибке, для тестов, размещенных внутри VS IDE:

Тип хоста «VS IDE» не может быть загружен по следующей причине: ключ «VS IDE» не может быть найден. Убедитесь, что на компьютере установлен соответствующий адаптер хоста .

Поэтому я попытался найти решение по адресу: MSDN - How to: Install a Host Adapter. Но это только задокументировано для VS2005 и 2008.

Я хотел бы попросить указания относительно VS 2013 года, где я могу узнать больше? Или что мне не хватает? Каким образом можно запускать интеграционные тесты вне VS IDE? Как можно внедрить IDE программно?

Спасибо заранее!

ответ

2

Я понял, как это сделать, не используя атрибут HostType. Надеюсь, следующий фрагмент кода может помочь другим, а также:

Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.12.0", true);  
DTE env = Activator.CreateInstance(visualStudioType, true) as DTE; 

Это позволит получить тип ВС, с указанной версией и будет сгенерировано исключение ошибки. DTE будет интерфейсом EnvDTE, который можно использовать.

Чтобы получить услуги, сделайте следующее, например. чтобы получить UI Shell:

ServiceProvider serviceProvider = new ServiceProvider(env as 
Microsoft.VisualStudio.OLE.Interop.IServiceProvider); 
IVsUIShell uiShell = (IVsUIShell)serviceProvider.GetService(typeof(SVsUIShell)); 

Необходимо следить за услуги, получить RCW ручку и правильно освободить объект COM впоследствии использование.

Смежные вопросы