2013-12-16 3 views
8

У меня есть Visual Studio 2010, и у нас есть два решения VS, с которыми мы работаем. Первое - это веб-приложение, второе - строго для тестов SpecFlow. Наличие двух экземпляров Visual Studio, работающих одновременно, только для запуска функций SpecFlow, - это использование всей доступной оперативной памяти, которая замедляет работу.Как вы запускаете сценарии SpecFlow из командной строки, используя MSTest?

Я сделал несколько поисков в Google и здесь, в StackOverflow, а также просмотрел документацию MS в средстве командной строки MSTest, но я не нашел ответа. Полный комплект тестов SpecFlow занимает около 45 минут, и мне действительно нужно всего лишь запустить несколько сценариев.

Мне было интересно, есть ли способ запускать отдельные функции SpecFlow и даже отдельные сценарии из командной строки с использованием MSTest?

+0

Вы также можете рассмотреть возможность просмотра NCrunch (http://NCrunch.net) или ContinuousTests (http://www.continuoustests.com). Оба этих инструментария предназначены для быстрого запуска ваших тестов. Я использую NCrunch, который имеет * запускает тесты, затронутые моим режимом изменения *, и будет именно тем, что вы после – AlSki

ответ

9

За течением времени пробные испытания являются обычными модульными испытаниями. Таким образом, вы должны быть в состоянии работать с ними так же, используя что-то вроде:

Для запуска определенного сценария:

mstest /testcontainer:tests.dll /test:GivenMyScenarioWhenIDoSomeStuff 

Чтобы запустить несколько конкретного сценария вы можете использовать флаг/тест несколько раз:

mstest /testcontainer:tests.dll /test:GivenMyScenarioWhenIDoSomeStuff /test:GivenMyScenarioWhenIDoSomemthingElse 

Чтобы запустить функцию

mstest /testcontainer:tests.dll /test:MyFeatureName 

Если вы добавляете теги на сценарии используя @MyTag, например, вы можете также использовать опцию

/category:MyTag to filter down the scenarios to run. 

Пожалуйста, посмотрите на сгенерированный код позади ваших художественных файлов, чтобы получить подсказку о том, как вещи на самом деле работает, если вы familliar с MSTest он должен быть довольно простым.

+0

Похоже, что это ответ, однако я склоняю голову против другой проблемы. Я установил все зависимости тестового проекта через NuGet, который бросает все эти DLL в каталог «packages». Утилита командной строки 'mstest' ожидает, что все библиотеки классов будут существовать в текущем рабочем каталоге. Я установил пакет SpecBind' NuGet, который дает мне отсутствующий DLL-файл (SpecBind.CodedUI.dll), но он не копируется в мой каталог сборки. Мне нужно будет кое-что сделать, если у вас нет некоторых предложений (я использую тесты CodedUI для этого проекта). –

+0

Я отмечаю это как ответ, потому что я склоняю голову против другой проблемы - возможно, из-за настройки моего решения Visual Studio. Благодаря! –

+2

Используйте vstest.console.exe вместо mstest. Vstest.console.exe автоматически загрузит все ваши пакеты nuget, а также другие библиотеки. Например, Vstest.console.exe mytests.dll – Mohamed

2

Существует пакет nuget с именем «Specrun.Specflow». И он изменит ваш app.config и установит имя unitTestProvider = «SpecRun», поэтому вы можете удалить имя unitTestProvider = «MSTest» или «NUnit», теперь при сохранении изменений App.config визуальная студия предлагает вам восстановить ваши файлы функций, нажмите «Да» и теперь создайте решение. Что вы увидите, ваши тестовые файлы были восстановлены. Теперь в командной строке перейдите в C: \ Users \\ Documents \ Visual Studio 2015 \ Projects \ и введите runtests.cmd, он должен запускать все ваши файлы функций напрямую.

+2

Specrun.Specflow - это коммерческий продукт Specflow и стоит 150 долларов за пользователя.Похоже, что этот поток доходов объясняется тем, что практически нет поддержки для запуска потока спецификаций в любом из стандартных бегунов с открытым исходным кодом. Платные для бегунов действительно бесполезны для сред CI и представляют собой организационный барьер для использования даже для богатых корпораций. Это, конечно, не ваша вина, но я подумал, что это следует упомянуть в качестве основного замечания к вашему предложению. – Amias

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