熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

探索JUnit 4.4 新特性[6]

2013-11-23 20:47:55  來源: Java開源技術 

  TDD 的優點

  使得開發人員對即將編寫的軟件任務具有更清晰的認識使得他們在思考如何編寫代碼之前先仔細思考如何設計軟件 對測試開發人員所實現的代碼提供了快速和自動化的支持 提供了一系列可以重用的回歸測試用例(regression test case)這些測試用例可以用來檢測未來添加的新代碼是否改變了以前系統定義的行為(測試代碼兼容性)

  然而TDD 也同樣具有一定的局限性對於開發人員來說只用一些具體有限的簡單例子來表達程序的行為往往遠遠不夠有很多代碼行為可以很容易而且精確的用語言來描述卻很難用一些簡單的例子來表達清楚因為他們需要大量的甚至無限的具體例子才可以達到被描述清楚的目的而且有時有限的例子根本不能覆蓋所有的代碼行為

  以下列出的代碼行為反映了 TDD 的局限性

  將十進制整數轉換成羅馬數字然後再將其轉換回十進制數並保持原有的數值(需要大量的測試用例有限的測試數據可能測不出所實現的代碼的錯誤) 對一個對象進行操作希望結果仍然等於原來的對象(需要考慮各種各樣類型的對象) 在任何一個貨幣的 collection 中添加一個對象 dollar需要產生出另外一個新的與以前不同的 collection (需要考慮所有的 collection 類型的對象)

  理論(Theory)的出現就是為了解決 TDD 這個問題 TDD 為組織規劃開發流程提供了一個方法先用一些具體的例子(測試用例 test case)來描述系統代碼的行為然後再將這些行為用代碼語句進行概括性的總的陳述(代碼實現 implementation)而 Theory 就是對傳統的 TDD 進行一個延伸和擴展它使得開發人員從開始的定義測試用例的階段就可以通過參數集(理論上是無限個參數)對代碼行為進行概括性的總的陳述我們叫這些陳述為理論理論就是對那些需要無窮個測試用例才能正確描述的代碼行為的概括性陳述結合理論(Theory)和測試一起可以輕松的描述代碼的行為並發現 BUG 開發人員都知道他們代碼所想要實現的概括性的總的目的理論使得他們只需要在一個地方就可以快速的指定這些目的而不要將這些目的翻譯成大量的獨立的測試用例

  理論機制的優點

  優點 理論(Theory)使得開發完全抽象的接口(Interface)更加容易

  優點 理論仍然可以重用以前的測試用例因為以前的許多傳統的具體的測試用例仍然可以被輕松的改寫成理論(Theory)測試實例

  優點 理論(Theory)可以測試出一些原本測試用例沒測出來的 bugs 優點 理論允許配合自動化測試工具進行使用自動化工具通過大量的數據點來測試一個理論從而可以放大增強理論的效果利用自動化工具來分析代碼找出可以證明理論錯誤的值

  下面通過一個簡單的例子來逐步介紹理論的優點

  比如設計一個專門用來貨幣計算的計算器首先需要給代碼行為編寫測試用例(這裡以英鎊 Pound 的乘法為例)如清單 所示

  清單 英鎊 Pound 乘法的一個測試用例

@Test
public void multiplyPoundsByInteger() {
    assertEquals( new Pound()times()getAmount() );
}

  這時很自然的就會想到一個測試用例可能不夠需要再多一個如清單 所示

[]  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29102.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.