2011-06-23 55 views
0

我們現在有一個相當大的rails(2.3.9)應用程序,帶有0個rails測試用例。 (什麼???)。是。有可能的:)。如果我們想要在一個框架上測試,我們應該選擇哪一個,cucumber,rspec1或rails在測試框架中構建的嗎?我只說一個框架的原因是因爲爲了相同的目的而學習和管理多個框架的複雜性。Rails 2.3.9測試框架 - rspec1,黃瓜或rails內置測試框架

Q1:一些Y2009的SO questions建議使用rspec的 單元測試用於測試 視圖 模型/控制器和黃瓜。那(截至2011年6月23日 2011)仍然是一個有效的建議?

Q2:有沒有人成功地建立起所有 他們需要在一個單一 框架測試用例(說只是Cucumber)?如果 是哪一個?

回答

1

這是有點偏好的問題,但三個我會選擇rspec或Test :: Unit。 RSpec的已經被批評爲過度設計最近,但我真的很喜歡:

  • 的匹配語法(value.should == 1assert_equal(value, 1)
  • 測試的名字並不侷限於方法名(it "does something awesome" { ... } VS def test_it_does_something_awesome; ...; end

你可以使用TestUnit和一些支持庫來實現這兩個功能,但是我更喜歡使用RSpec。當您編寫代碼和測試時,通常(總是?)最好從外部開始:IE,編寫一個集成測試(登錄用戶點擊一個按鈕將$ 5.00項目添加到購物車,然後簽出,並支付,他的信用卡應收取5.00美元)。因此,與其測試特定的類行爲(就像使用單元測試一樣),您需要在數據庫中創建對象,並以類似於用戶Web瀏覽器的方式進行與站點交互的get/post/etc.調用會讓你的測試滲透整個堆棧。

最近我一直在使用的RSpec的內部牛排我集成測試(使用水豚,以方便web交互)

一旦你建立你的外周長喜歡,那麼我建議你開始關注單元測試。

單元測試對於記錄一個類的行爲是非常棒的。我將它們分組在方法中,並描述可以傳遞給方法的內容以及我期望返回的內容。

describe Object do 
    describe "#method" do 
    it "returns 4 when passed 2" do 
     ... 
    end 
    end 
end 
2

問題1:這取決於你的開發者。基本上你可以用所有框架測試幾乎相同的東西。我會親自去rspec1。你會發現rspec的許多資源,尤其是rails 2.3.x.從長遠來看,我會嘗試將項目遷移到rails 3.等待的時間越長,它就越痛苦。

Q2:不,AFAIK黃瓜用於集成測試。你可以使用rspec或者testunit,但是你會缺少集成測試。如果你只進行集成測試,你會缺少單元測試,但你需要單元(或行爲)測試。此外,你應該投入一些時間在嘲笑框架,因爲它們會節省你很多時間。