Как запустить MSpec в тестовой системе Visual Studio с помощью Gallio?

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

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

Это привело к следующей ошибке

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

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

Результаты

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

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


person Richard Szalay    schedule 07.06.2012    source источник


Ответы (1)


Обновление. Сейчас это проект по интеграции MSpec в тестовую систему VS2012. Он доступен в галерее Visual Studio и источник находится на GitHub.

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

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

Проблема 1. Вложенные типы игнорируются

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

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

Проблема 2: MSpec вызывает "Исключение при вызове тестового драйвера"

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

person Richard Szalay    schedule 10.06.2012