1. 程式人生 > >Java單元測試工具:JUnit4(一)——概述及簡單例子

Java單元測試工具:JUnit4(一)——概述及簡單例子

(一)JUnit概述及一個簡單例子

        看了慕課網的JUnit視訊教程: http://www.imooc.com/learn/356,總結筆記。
        這篇筆記記錄JUnit的概述,以及一個快速入門的例子。

1.概述

1.1 什麼是JUnit

        ①JUnit是用於編寫可複用測試集的簡單框架,是xUnit的一個子集。xUnit是一套基於測試驅動開發的測試框架,有PythonUnit、CppUnit、JUnit等。
        ②Junit測試是程式設計師測試,即所謂白盒測試,因為程式設計師知道被測試的軟體如何(How)完成功能和完成什麼樣(What)的功能。
        ③多數Java的開發環境都已經集成了JUnit作為單元測試的工具,比如Eclipse。

1.2 為什麼要使用測試工具

        ①測試框架可以幫助我們對編寫的程式進行有目的地測試,幫助我們最大限度地避免程式碼中的bug,以保證系統的正確性和穩定性。         ②很多人對自己寫的程式碼,測試時就簡單寫main,然後sysout輸出控制檯觀察結果。這樣非常枯燥繁瑣,不規範。缺點:測試方法不能一起執行,測試結果要程式猿自己觀察才可以判斷程式邏輯是否正確。         ③JUnit的斷言機制,可以直接將我們的預期結果和程式執行的結果進行一個比對,確保對結果的可預知性。

1.3 相關連結

JUnit官網: http://junit.org/ JUnit的jar包下載: https://github.com/junit-team/junit/wiki/Download-and-Install

2.簡單例子快速入門

2.1 建立簡單業務類

        使用Eclipse建立一個專案,匯入JUnit相關包,因為eclipse集成了JUnit框架,所以可以直接右鍵專案,選擇Build Path → 點選Add Libraries → 選擇JUnit  → 點選Next,選擇JUnit版本,然後Finish。(其實也可以下載jar包作為使用者庫來新增)         編寫一個簡單的計算類:Calcuate類 [java]
  view plain  copy
  1. package jtzen9.util;  
  2. /** 
  3.  * 實現加減乘除的簡單計算類 
  4.  * @author Zen9 
  5.  * 
  6.  */  
  7. public class Calcuate {  
  8.     public int add(int a,int b){  
  9.         return a+b;  
  10.     }  
  11.     public int subtract(int a,int b){  
  12.         return a-b;  
  13.     }  
  14.     public int multiply(int a,int b){  
  15.         return a*b;  
  16.     }  
  17.     public int divide(int a,int b){  
  18.         return a/b;  
  19.     }  
  20. }  

2.2 建立測試類

        ①右鍵Calcuate類,new 一個 JUnit Test Case:

        ②彈出的對話方塊,暫時不做修改,直接點選next:(這樣建立的測試類會在同一個包下,暫時不管測試類和業務類的隔離)

        ③勾選要測試的方法,點選Finish:



2.3 修改生成的測試類程式碼

        上面步驟生成的測試類只包含測試方法的模板,並沒有具體的測試細節,修改成如下:(其中有比較多的重複程式碼,暫時不管;並將減法的測試設為有問題) [java]   view plain  copy
  1. package jtzen9.util;  
  2. import org.junit.Assert;  
  3. import org.junit.Test;  
  4. public class CalcuateTest {  
  5.     Calcuate calcuate;  
  6.   
  7.     @Test  
  8.     public void testAdd() {  
  9.         calcuate = new Calcuate();  
  10.         int result = calcuate.add(23);  
  11.         Assert.assertEquals("加法有問題"5, result);  
  12.         /* 
  13.          * "加法有問題":期望值和實際值不一致時,顯示的資訊 
  14.          * 5 :期望值 
  15.          * result :實際值 
  16.          */  
  17.     }  
  18.   
  19.     @Test  
  20.     public void testSubtract() {  
  21.         calcuate = new Calcuate();  
  22.         int result = calcuate.subtract(122);   
  23.         Assert.assertEquals("減法有問題"10000, result); //故意設定減法期望值為10000  
  24.     }  
  25.   
  26.     @Test  
  27.     public void testMultiply() {  
  28.         calcuate = new Calcuate();  
  29.         int result = calcuate.multiply(23);  
  30.         Assert.assertEquals("乘法有問題"6, result);  
  31.     }  
  32.   
  33.     @Test  
  34.     public void testDivide() {  
  35.         calcuate = new Calcuate();  
  36.         int result = calcuate.divide(63);  
  37.         Assert.assertEquals("除法有問題"2, result);  
  38.     }  
  39. }  

2.4 執行結果

        右鍵測試類,選擇Run As , JUnit Test,結果如下:
        總共有4個測試方法,運行了4個方法;其中failures有1個,即有一個方法的輸出結果跟我們的預期不一樣。