Возможность такого рода переиспользования GWT в Cucumber – я считаю грязным хаком.
Почему хаком? – потому что есть файл .feature, который содержит тест фичи и это специальное место для того чтобы вот так обычным текстом писать And Click on the "Reports" link
Есть файл step definition – там должен быть код, без «хрупкого» текста. Я уверен в том, что код нельзя мешать с обычным текстом.
Почему грязный? – потому что в тексте Given\When\Then есть всегда неоднозначность.
Вот например, читая строку:
And 'Click on the "Reports" link'
Я могу подумать, что "Reports" – может быть параметром для какого-нибудь шага. А, на самом деле, это может быть не так. По тексту я не могу определить, как будет работать шаг, и какие параметры он принимает, и мне придется лишний раз идти в код нужного мне шага, чтобы выяснить это.
С другой стороны, этот код можно переписать без неоднозначностей:
{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }When "I open reports tab" do
LandingPage.visit()
LandingPage.open_tab("Reports")
end{/syntaxhighlighter}
(Я Руби не очень хорошо знаю, так что назовем это
псевдокодом
А что за ограничения Specflow? Я признаю, что они есть. Вот, например, интеграция с MS Test меня не очень радует. Чтобы запустить отдельный тест, нужно открывать сгенерированный код и запускать его оттуда. Для нормальной работы еще необходимо создавать отдельно списки Ordered Test.
Но, с NUnit у меня таких проблем нет.
Еще, иногда, Specflow не правильно находит привязки. Вот, в примере выше, мне пришлось сделать привязки с одинаковым текстом для When и Given, чтобы обойти эту проблему.
Но, все равно меня радует в Specflow подсветка синтаксиса, возможность перейти по F12 из фичи на ее Step Definition и автодополнение тоже хорошо работает.
Хотя, я NBehave тоже заинтересовался. Интересно посмотреть что это за зверь на практике.