一、單元測試概念
1. 什麼是的單元測試
- 單元測試是針對最小的功能單元編寫測試代碼
- java程序最小的功能單元式方法
- 單元測試就是針對單個Java方法的測試
2. 使用main()方法測試的缺點
- 只能有一個main()方法,不能把測試代碼分離
- 沒有打印出測試結果和期望結果
例如: expected:63533,but actual:89653 - 那麼此時就需要一種測試框架,幫助我們編寫測試
3. 單元測試的好處
- 確保單個方法運行正常
- 如果修改了方法代碼,只需要確保其對應的單元測試通過
- 測試代碼本身就可以作爲示例代碼
- 可以自動化所有測試並獲得報告
4. JUnit介紹
- JUnit是一個開源的Java語言的單元測試框架
- 專門針對Java語言設計,使用最廣泛
- JUnit是實際上的標準單元測試框架
4. JUnit特點
- 使用斷言(Assertion)測試期望結果
- 可以方便地組織和運行測試
- 可以方便地查看測試結果
- 常用IDE(例如Eclipse)都集成了JUnit
- 可以方便的集成到Maven
5. JUnit的設計
- TestCase:一個TestCase表示一個測試
- TestSuite:一個TestSuite包含一組TestCase,表示一組測試
- TestFixture:一個TestFixture表示一個測試環境
- TestResult:用於收集測試結果
- TestRunner:用於運行測試
- TestListener:用於監聽測試過程,收集測試數據
- Assert:用於斷言測試結果是否正確
6. 使用Assert斷言
- 斷言相等:assertEquals(期望值,測試結果)
- 斷言數組相等:assertArrayEquals((1,2,3),x)
- 浮點數斷言相等:assertEquals(3.1412,X,0.00001)
- 斷言爲null:assertNull(x)
- 斷言爲true/false:assertTrue(x>0) assertFalse(x<0)
- 其他:assertNotEquals/assertNotNull
7. Junit單元測試需要注意的點
- 一個TestCase包含一組相關的測試方法
- 使用Assert斷言測試結果(注意浮點數assertEquals要指定delta)
- 每個測試方法必須完全獨立
- 測試代碼必須非常簡單
- 不能爲測試代碼再編寫測試
- 測試需要覆蓋各種輸入條件,特別是邊界條件