2012-08-28 4 views
2

Я ищу способ реализации наследования в функциях specflow. Например, класс базовых функций, который имеет общие сценарии, которые необходимо протестировать.Inheritance in Specflow features

3-4 классы производных функций, которые наследуют все сценарии в базовом классе и добавляют некоторые из них. Аналогичным образом класс Binding также будет следовать структуре наследования. Это необходимо для тестирования приложения ASP.NET MVC с базовым контроллером (сценарии в классе базовых функций) и 4-5 реализаций.

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

Возможно ли это в specflow, или я иду по неверному маршруту? Пожалуйста помоги. Спасибо,

ответ

3

Я не уверен на 100%, если это правильный путь, чтобы принять (читайте как, мне никогда не нужно было делать что-либо подобное). Для меня любое наследование и повторное использование происходит в классах Определения Step (или Binding). Но даже так ...

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

  • «Код-за» (код-код-создатель) для ваших файлов функций - это частичные реализации классов ...
  • ... так что, я думаю, вы могли бы создать «базовый» (общий) файл функции ...
  • ... затем создать частичный файл класса для каждого из ваших конкретных/реализации. ...
  • ... каждый частичный класс укажет базовый класс, который является сгенерированным именем класса из «базового» кода функционального файла.

Надеюсь, это немного поможет.

EDIT: Хорошо, я проверил эту теорию ... Это будет работать, как я описал выше. Я только что создал новый проект с соответствующим проектом тестирования/спецификации, и сделал это в проекте test/spec. Тест-бегун выполнил базовую функцию, а затем выполнил конкретную/реализацию функцию ... которая включала базовую функцию снова.

Имейте в виду - требуется меньше 5 минут, чтобы сбить то, что я предложил, и посмотреть, соответствует ли результат вашему требованию.

+0

Большое спасибо за ваш ответ. Это прекрасно работает именно так, как я хочу. Единственная проблема заключается в том, что класс объектов наследования теряется, когда производная мера обновляется, возможно, потому что specflow регенерирует файл. :(Я пытаюсь повторить использование одного и того же файла функции для двух разных классов определения шага, которые получены из одного и того же базового класса определения шага. Если я создаю двухэтапные определения, неоднозначный вызов :(было бы здорово, если бы specflow принял оба определения соответствующих шагов и запустил его – ganeshran

+0

привет. Я смог достичь этого с помощью конспектов сценария. Я прошел в значениях и имел абстрактный заводский класс, который возвращал экземпляры на основе ключа в сценарий сценария. Я поместил все общие функции в один файл функций и создаю новые для специальных сценариев. Но основная цель не создавать дублирующие функции достигается с помощью этой техники. Спасибо за ваш ответ! – ganeshran