2016-07-27 3 views
2

Я ищу установку SpecFlow для различных уровней тестов, и в качестве части этого я хочу иметь возможность фильтровать те тесты, которые выполняются.пропустить спецификации specflow при определенных условиях

Например, я хочу выполнить полный прогон GUI, где я создаю зависимости для тестирования GUI в среде dev и запускаю все спецификации tagged @gui с шагами, выполняемыми через gui. Также из того же сценария я хочу запускать теги с меткой @smoke и настраивать любые зависимости, необходимые для развернутой среды, с шагами, выполняемыми через api.

Я знаю, что вы можете фильтровать теги при запуске бегуна specflow, но мне также нужно изменить способ работы каждого теста в контексте тестового прогона. Кроме того, я хочу, чтобы это изменение поведения было переключено с помощью одной конфигурации/командной строки arg при запуске на сервере сборки.

Итак, до сих пор мое решение состояло в том, чтобы иметь конфигурацию сборки для каждого типа тестового прогона и преобразовывать конфиги, чтобы я мог вводить поведение в specflow при запуске тестового запуска. Но я не уверен в правильном способе фильтрации по тегу.

я мог бы сделать somethig так:

[BeforeFeature] 
public void CheckCanRun() 
{ 
    if(TestCannotBeRunInThisContext()) 
    { 
     ScenarioContext.Current.Pending(); 
    } 
} 

Я думаю, что это будет работать (он не будет запускать функцию), но тест все равно приходят на мои результаты тестов, которые были бы грязным, если я m, отфильтровывая большинство тестов с помощью моего тега. Если есть способ, который я могу сделать, чтобы полностью удалить эту функцию?

+0

как вы проводите тесты, если вы не хотите запускать эти тесты? Использование встроенного VS runner? Из командной строки? На сервере сборки? –

+0

@SamHolder как во время разработки с использованием тестового бегуна resharper, так и на сервере CI (с разной конфигурацией на разных уровнях сборки), а также, если возможно, несколько спецификаций на развернутом сервере для проверки того, что развертывание прошло нормально ... –

ответ

1

Короче говоря, нет, я не думаю, что все равно нужно делать то, что вы хотите, кроме того, что вы указали выше.

Как бы вы исключили, что тесты запускались, если они были просто нормальными модульными тестами?

В бегуне ReSharper вы, вероятно, создадите тестовый сеанс только с тестами, которые вы хотите запустить. На сервере CI вы будете запускать тесты только в определенной DLL или в определенных категориях.

Specflow - это инструмент для создания единичных тестов. Он генерирует модульные тесты в ароматизаторе, указанном в конфиге. Бегун по-прежнему должен решить, какой из этих тестов будет запущен, поэтому те же самые принципы выбора тестов, которые должны выполняться выше, применяются к испытаниям на фильтрацию.

Помещение их в категории и запуск только тех категорий - самый простой способ, но с более мелким программным управлением это не применимо. То, что вы просите сделать, в основном, как сказать «запустить этот тест, но позвольте мне решить в тесте, если я хочу, чтобы он работал», что на самом деле не имеет смысла.

+0

Благодарю. То, что вы сказали там, действительно дает мне представление о другом способе достижения этого. Я могу сделать плагин генератора для подавления тестов, которые я не хочу на стадии генерации, предполагая, что у меня есть доступ к правильной информации в этот момент. –

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