2011-08-06 6 views
4

specflowは私のチームに使いたいと思う解決策のようです。私のマネージャーは、BDDスタイルのテストが本当に好きではありません。 specflowとVisual Studioの機能がうまく統合されているため、specflowフレームワークを活用してbdd形式のテストを少なくできるかどうかは疑問です。私のようなキーワードを使用言い換えるbdd以外の手続きテストを書くためにspecflowを使用することは可能ですか?

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

必見

たとえば、代わりのようなテストを書くの:として

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" 

...私はそれを書きたいですGivenThenなど、またはそれらの単語で始まらないステップを処理できるspecflowですか?

[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(); 
    } 

あなたが説明した方法にテストを変更する唯一の方法は、コードジェネレータを変更することです:

答えて

1

Specflowはこのようなテストケースを生成することを考えると、いつ、そして、コードジェネレータのキーワード使用しています。 GherkinDialectTryParseStepKeyword()メソッドは良いスタートです

0

私は多くの場合、あなたが与えられた時を解釈する方法だと思います。私たちが見つけた最良のアプローチは、Givenがテストのために州を準備するべきだったということでした。いつあなたがテストしているアクションであるべきか、それでは検証する必要があります。このアプローチから考えると、どちらの例も非常に似ています。個人的に私は第2のより一般的なスタイルが好きです。この方法では、機能を特定のステップセットに縛らず、代わりに動作をテストします。そのようなテストは本当にそれ以上のことはしません。例えば。

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を使います。あなたはすべてを使用する必要はありません。

関連する問題