单元测试技巧:创建描述性测试
您的單元測試應盡可能具有描述性。 他們給您的反饋應該非常清楚,您甚至不需要啟動調試器并一步一步地檢查代碼來檢查局部變量。 為什么? 因為那需要時間,而且我們很懶,對嗎? 為此,您需要創建描述性測試。 有多種實現方法。 這是其中兩個。
添加斷言消息
通常可以將斷言消息指定為測試斷言中的附加參數,并且在該特定測試用例失敗時,它們會作為失敗消息出現。
例如,在jUnit中,您可以指定斷言消息,例如:
assertEquals("The firstname of the two people should match if the clone was successful", "Fritz", person1.getFirstname());另一方面,在MSTest中,必須將斷言消息作為最后一個參數添加。
Assert.AreEqual("Fritz", person1.Firstname, "The firstname of the two people should match if the clone was successful");注意 ,不要“過度設計”。 我將這些注釋與其他代碼注釋類似地對待:如果它們添加了有意義的信息,則只需添加它們即可。 否則,它們就是浪費,因此就這樣對待它們。
首選顯式斷言
我所說的顯式斷言的意思是對執行的操作使用正確的斷言。 例如,如果您需要像前面提到的斷言中那樣執行相等性檢查,請不要使用布爾斷言語句。 (這里是一個虛擬的QUnit測試用例的示例)
test('Should correctly clone two people', 1, function(){//...ok(person1.firstname === 'Fritz', 'I expect both names to match if the clone operation succeeded'); });…以及相應的結果在輸出窗口中:
這個結果并不是真正的描述性…
結果沒有告訴我們太多,對吧? 您可以說的是,此人的名字與您期望的名字不匹配,因此克隆操作可能不會成功。 但為什么?? 那它的實際價值是多少?
使用equals代替:
test('Should correctly clone two people', 1, function(){//...equal(person1.firstname, 'Fritz', 'I expect both names to match if the clone operation succeeded'); });……結果又是:
哦,看那里,有描述性的結果。
現在,此測試用例的結果更具描述性。 它不僅告訴您操作失敗,而且還準確地向您顯示了預期值和實際值。 這可能會立即提示您可能存在問題的地方。
翻譯自: https://www.javacodegeeks.com/2013/06/unit-testing-tip-create-descriptive-tests.html
總結
以上是生活随笔為你收集整理的单元测试技巧:创建描述性测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样连接普联450m无线路由器设置450
- 下一篇: 填充一个池需要多少个线程?