2011-08-06 42 views
4

specflow看起來像我希望我的團隊考慮使用的解決方案。然而,我的經理並不喜歡BDD式的測試。由於specflow與visual studio的良好集成,我想知道是否可以利用specflow框架,同時允許使用較少的bdd風格的測試形式。可能使用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 

換句話說,必須我使用的關鍵字,如GivenThen等,或者specflow能夠處理不以這些單詞開始的步驟?

回答

1

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

改變測試,您所描述的方式的唯一方法是通過改變代碼生成器。 方法GherkinDialect是一個很好的開始

0

我認爲很多它是你如何解釋給定,當然然後。我們發現的最好方法是給予應該準備測試的狀態。何時應該是您正在測試的操作,然後應該是驗證。當你從這個方法中想到這兩個例子都非常相似。我個人喜歡第二個更通用的風格。這樣你就不會把你的功能綁定到一組特定的步驟,而是測試你的行爲。在說,它真的不會花更多的時間來測試你的測試。例如。

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進行代碼生成。雖然你不需要全部使用。

相關問題