單元測試作為軟件測試的一個類別,并非是xUnit架構創造的,而是很早就有了。但是xUnit架構使得單元測試變得直接、簡單、高效和規范,這也是單元測試最近幾年飛速發展成為衡量一個開發工具和環境的主要指標之一的原因。正如Martin Fowler所說:“軟件工程有史以來從沒有如此眾多的人大大收益于如此簡單的代碼!”而且多數語言和平臺的xUnit架構都是大同小異,有的僅是語言不同,其中最有代表性的是JUnit和NUnit,后者是前者的創新和擴展。一個單元測試框架xUnit應該:1)使每個TestCase獨立運行;2)使每個TestCase可以獨立檢測和報告錯誤;3)易于在每次運行之前選擇TestCase。下面是我枚舉出的xUnit框架的概念,這些概念構成了當前業界單元測試理論和工具的核心:
[測試方法/TestMethod]
測試的最小單位,直接表示為代碼。
由多個測試方法組成,是一個完整的對象,是很多TestRunner執行的最小單位。
由多個測試用例構成,意在把相同含義的測試用例手動安排在一起,TestSuite可以呈樹狀結構因而便于管理。在實現時,TestSuite形式上往往也是一個TestCase或TestFixture。
斷言一般有三類,分別是比較斷言(如assertEquals),條件斷言(如isTrue),和斷言工具(如fail)。
為每個測試用例安排一個SetUp方法和一個TearDown方法,前者用于在執行該測試用例或該用例中的每個測試方法前調用以初始化某些內容,后者在執行該測試用例或該用例中的每個方法之后調用,通常用來消除測試對系統所做的修改。
期望該測試方法拋出某種指定的異常,作為一個“斷言”內容,同時也防止因為合情合理的異常而意外的終止了測試過程。