類通常使用以下語法編寫的測試進行測試,這些測試由大量測試框架(例如Ruby的Unit :: Test;或者如本示例中的MiniTest)提供:測試 - 術語
class TestLolcat < MiniTest::Unit::TestCase
def setup
@lolcat = Lolcat.new
end
def test_that_lolcat_can_have_cheezburger
assert_equal true, @lolcat.i_can_has_cheezburger?
end
end
或者代替通過使用寫入第二排序語法的,它是由一組重疊的測試框架的提供測試(例如RSpec的;或如在此實例中,MINITEST再次):
describe Lolcat do
before do
@lolcat = Lolcat.new
end
it "must be able to have cheezburger" do
@lolcat.i_can_has_cheezburger?.must_equal true
end
end
(也許還有其他語法系列,它們也適用於測試類的方法和屬性,但這些是我感興趣的兩個。)
我想知道的是:什麼是每個這兩個語法族?
如果你想知道更多關於爲什麼我在問,看到下面的行。
的原因,我問這個問題是在網上搜索還沒有產生明顯的共識。例如,MiniTest documentation是指如上文所「單元測試」語法和秒如「規格」語法第一語法。相比之下,邁克爾哈特爾describes class method and attribute tests written in the second sort of syntax as "unit tests"。在用這種語法編寫的測試測試多個類的交互所產生的更高級別的功能時,他稱它們爲「集成測試」。
我還看到有人形容第一和第二各種各樣的語法爲"Test::Unit style" and "RSPec-esque", respectively,或「TDD」語法和「BDD」語法。對於秒那種語法的其他名稱包括:「'should'-like syntax」和「it syntax」。
我的理解(這隱約表明哈特爾是正確的)如下:
- TDD是實踐,而不是測試語法。具體而言,通常是編寫一個失敗的測試(例如單元測試或集成測試),然後編寫代碼以使測試通過,然後重新合適,然後重新開始循環。
- BDD也是練習,但它確實對測試語法做了一些有限的處方。具體而言,遵循TDD的做法是使用「should」作爲測試名稱中的第一個單詞,並嵌套測試代碼以在適當的情況下提供上下文。
- 單元測試是練習,而不是測試語法。特別是測試單個代碼單元(例如,類方法或屬性)
- 單元測試是測試在單元測試過程中編寫,無論採用何種語法。
- 集成測試是練習,而不是測試語法。特別是測試由多個類的交互產生的更高級功能的做法。
然而,這還不完全清楚的事情了。很明顯,我不是測試實踐,測試類型或測試語法術語的專家。我已經能夠拿出最好的名字了兩種語法我已經給出了上面的例子分別是「‘斷言’語法」和「‘這......做’語法」, 。除非這些名字被廣泛使用,否則我需要你的建議,StackOverflow用戶!
+1一個很好的問題;當我們分享術語時,我們更容易談論事情。 –
第一個來自xUnit框架,即測試方法。 (JUnit,NUnit et.all)第二個來自BDD陣營,即規格(Cucumber,RSpec,et.all) – Gishu