2012-07-21 64 views
1

從我看來,自從SUnit,JUnit和常用的xUnit測試框架以來,測試已經走過了很長一段路。測試框架有哪些「樣式」?

我查看了RSpecCucumber以瞭解什麼是「行爲驅動」測試關於什麼,但現在我確實想知道編寫單元測試存在哪種類型的其他方法。

我沒有被綁定到任何特定的語言,但更感興趣的測試代碼的一般想法和方法。

所以,我的問題是,單元測試有哪些風格不同的方法,即與「斷言」不同的方法。

我舉的例子:

單位試井的xUnit的風格看起來大致是這樣在你的FAVORIT語言:

stack = new Stack() 
assertTrue (stack.empty()) 

stack.push(1) 
assertFalse (stack.empty()) 
assertEquals(1, stack.top()) 

RSpec的風格單元試井看起來非常像這樣(大約即興) :

describe Stack do 

    it "should be empty" do 
    Stack.new.empty?.should == true 
    end 

    it "should contain new value on top" do 
    stack = Stack.new 
    stack.push(1) 
    stack.empty?.should == false 
    stack.top().should == 1 
    end 
end 

還有其他有趣的風格,符號'DSL'嗎? 當然,每種語言和框架都會有不同的主題,但是有不同的一般'主題'/風格嗎?

+0

我不知道我是否完全正確地理解你的問題。有單元測試框架作爲NUnit,Visual Studio中內置的單元測試框架以及其他一些框架。這些可用於基於狀態的測試。如果您還想使用基於行爲的測試,則可能需要使用Rhino Mocks,MOQ,TypeMock等隔離(模擬)框架之一。此外,您可以執行集成測試,以便將多個組件一起測試。自動UI測試是另一種工具,例如soapUI用於測試Web服務(儘管我會將其看作集成測試)。 – Gorgsenegger 2012-07-21 08:11:37

+0

我試圖擴大這個問題。希望它更清楚。 – smarr 2012-07-21 09:22:27

+1

不確定它適合你的問題,但我已經看到開發人員在他們的jUnit測試中放置'// Given','// When'和'// Then'註釋來幫助他們描述前提條件,測試事件,和預期的結果。 – 2012-07-21 09:30:38

回答

0

我個人很喜歡Given,When,Then鍵入語法進行測試。

Given some particular situaion 
When some action occurs 
Then there will be an outcome that can be verified. 

我開始了使用像.NET StoryQSpecFlow工具,這是真正整潔這種方法。自從我開始編寫我自己的little framework這更適合我自己的個人風格,但還不是特別成熟。

1

我只能想到兩種風格的測試。以代碼爲中心(xUnit和RSpec給出上面的代碼)和以行爲爲中心的(cucumber,SpecFlow - Given/Then/When)。 現在,您可以在代碼中心框架(代碼#1)中進行行爲風格的測試。

也有三種類型的測試:

  • Mockists - 大部分依賴的是(嚴格)嘲笑。
  • Stubbists - 大多數依賴關係被殘留。
  • 集成 - 大部分依賴是真實的。

代碼#1:

@Test 
public void theScenarioDescription() { 
    givenThatSomething(); 
    whenIWiggleIt(); 
    thenSomethingHasHappened(); 
}