Как запустить тесты specflow с помощью Nunit 2.6.1 на сервере сборки?
Кроме того, как вы поддерживаете и организуете эти тесты для успешного запуска на сервере сборки с несколькими программистами автоматизации, кодирующими отдельные тесты?
Как запустить тесты specflow с помощью Nunit 2.6.1 на сервере сборки?
Кроме того, как вы поддерживаете и организуете эти тесты для успешного запуска на сервере сборки с несколькими программистами автоматизации, кодирующими отдельные тесты?
Попробую пока ответить на вторую часть вашего вопроса:
«Как вы поддерживаете и организуете эти тесты для успешного запуска на сервере сборки с несколькими программистами автоматизации, кодирующими отдельные тесты?»
Такого рода тесты могут превратиться в беспорядок, и вот почему:
Благодаря этим двум простым фактам эту модель легко сравнить с процедурным/структурным программированием. Контекст сценария ничем не отличается от некоторых глобальных переменных, а шаги — это некие методы, которые можно вызывать в любое время в любом месте.
Что моя команда делает, чтобы избежать огромного беспорядка в файлах шагов, так это делает их настолько глупыми, насколько это возможно. Все, что делает шаг, — это анализ и вызов служб, которые будут выполнять реальную значимую работу и содержать контекст текущего теста. Мы называем эти службы «xxxxDriver» (где xxxx — объект домена, с которым мы имеем дело).
глупый пример:
[Given("a customer named (.*)")]
public void GivenACustomer(string customerName)
{
_customerDriver.CreateCustomer(customerName);
}
[Given("an empty schedule for the customer (.*)")]
public void GivenEmptySchedule(string customerName)
{
var customer = _customerDriver.GetCustomer(customerName);
_scheduleDriver.CreateForCustomer(customer);
}
«xxxxxDriver» будет содержать все репозитории, веб-шлюзы, заглушки, макеты или все, что связано с соответствующим объектом домена. Еще одна важная деталь заключается в том, что если вы внедрите эти драйверы в пошаговые файлы, specflow создаст их экземпляр для каждого сценария и будет использовать его среди всех пошаговых файлов.
Это был лучший способ, который мы нашли, чтобы сохранить некоторую согласованность в том, как мы поддерживаем и расширяем шаги, не наступая друг на друга пальцами ног с большой командой, касающейся одной и той же кодовой базы. Еще одно огромное преимущество заключается в том, что это помогает нам находить похожие шаги при навигации по использованию методов в классах драйверов.
В кодовой базе specflow есть наглядный пример. (посмотрите в папке с драйверами) https://github.com/techtalk/SpecFlow/tree/master/Tests/TechTalk.SpecFlow.Specs