2012-06-07 9 views
4

Я пытаюсь запустить тесты MSpec в тестовой системе Visual Studio с использованием Gallio, но, похоже, он игнорирует плагин MSpec из среды IDE. То, что я сделал:Как запустить MSpec в тестовой системе Visual Studio с помощью Gallio?

  1. Установленные Gallio
  2. Добавлен пакет MSpec NuGet на мой тестовый проект
  3. Добавлен пакет Gallio NuGet на мой тестовый проект
  4. скопировал три файлы, необходимые для интеграции MSpec Галлион в папка «MSpec» в директории установки Gallio в
  5. Написал тест MSpec
  6. Ран «Все тесты в решении» в IDE

Это дало следующее сообщение об ошибке

«Никакие испытания не проводились, так как не загружены тесты или выбранные тесты отключены»

Чтобы проверить сам Gallio, я добавил ссылку на MbUnit и создал простой тест MbUnit. Я также использовал другие инструменты Gallio, чтобы проверить, был ли вообще подключен плагин. Я даже перезапустил VS для хорошей оценки.

Результаты

Запуск тестов с использованием Gallio.Echo или Gallio.Icarus успешно выполняет тесты как MBUnit и MSpec, поэтому плагин является подхватили. Запуск тестов из Visual Studio запускает тест MbUnit, но не тест MSpec, поэтому интеграция Gallio работает (а не плагин MSpec). Есть предположения?

Прежде, чем кто-нибудь отметит это: да, я бы предпочел использовать ReSharper, но лицензии на данный момент не являются вариантом для моей ситуации.

ответ

5

Обновление: Теперь проект для интеграции MSpec в тестовую систему VS2012. Он доступен на Visual Studio Gallery и source is on GitHub.

После начала отладки проблемы с обоими источниками проекта, есть две основные проблемы, вызывающие несовместимость между MSpec и бегуном VS Gallio. Однако обе проблемы связаны с тем, что бегун VS использует Cecil для загрузки информации типа из сборок (предположительно, чтобы избежать загрузки тестовой сборки в основной VS AppDomain).

Я обновлю этот ответ, когда открою больше (надеюсь, что один или несколько исправлений исправят проблемы).

Выпуск 1: Вложенные типы игнорируются

Я использую вложенные типы для моих тестов (SubjectSpec+when_something), которые игнорировались Cecil на основе отражения, используемый VS бегуна Gallio, чтобы избежать загрузки тестовой сборки в домен приложения.

Это оказалось довольно простым исправлением, которое я представил в качестве патча разработчикам Gallio. Я обновлю этот ответ, если/когда я получу подтверждение того, какой релиз он будет частью.

Выпуск 2: MSpec вызывает «произошло исключение при вызове драйвера тест»

Если тип контейнера удаляют, чтобы избежать проблемы 1, MSpec выдает эту ошибку. Причиной этого является то, что MSpec пытается создать экземпляр тестового объекта, но Gallio только снабжает его оберткойType объект, который фактически не может быть создан.