Можно ли использовать Specflow для написания не BDD процедурных тестов? - PullRequest
4 голосов
/ 06 августа 2011

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

Например, вместо написания теста вроде:

Scenario: Help->About
  Given a user is logged in to "http://..." as "user/password"
    And they are on the page titled "Home"
   When I click on "about"
   Then I should see a window titled "about"

... Я хотел бы написать это как:

Scenario: Help->About
  log in to "http://..." as "user/password"
  click on the "About" link
  assert "About" window should be visible

Другими словами, must Я использую такие ключевые слова, как Given, Thenи т. д. или specflow способен обрабатывать шаги, которые не начинаются с этих слов?

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Specflow использует ключевые слова Given, When и Then в генераторе кода для генерации тестового примера, подобного следующему:

    [NUnit.Framework.TestAttribute()]
    [NUnit.Framework.DescriptionAttribute("See the content of a message")]
    public virtual void SeeTheContentOfAMessage()
    {
        TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Help->About", ((string[])(null)));
        this.ScenarioSetup(scenarioInfo);
        testRunner.Given("a user is logged in to \"http://\" as user/password");
        testRunner.When("I click on About"); 
        testRunner.Then("I should see a window titled about");
        testRunner.CollectScenarioErrors();
    }

Единственный способ изменить тесты так, как вы описали, - это изменить кодгенератор.Метод TryParseStepKeyword() в GherkinDialect - хорошее начало

0 голосов
/ 19 августа 2011

Я думаю, что многое из того, как вы интерпретируете данное, когда и потом.Наилучшим подходом, который мы нашли, было «Подготовить штат к тесту».Когда должно быть действие, которое вы тестируете, а затем должна быть проверка.Когда вы думаете об этом из этого подхода, оба примера очень похожи.Лично мне нравится более общий стиль второго.Таким образом, вы не привязываете свою функцию к определенному набору шагов, а проверяете поведение.Говоря, что это действительно не займет больше, чтобы ваши тесты, как это.например.

Scenario: Help->About
Given a user is logged in
When you navigate to the the About page
Then the about information should be displayed

Я стараюсь не использовать определенные действия, такие как щелчок.В конце концов, вам решать, как обозначить шаги, но specflow действительно использует Given / When / Then для генерации кода.Вам не нужно использовать все, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...