java如何使用JUnit進行單元測試

 

注:全部內容都是在eclipse上實現,關於eclipse的安裝和jdk的安裝配置,請看:http://www.cnblogs.com/fench/p/5914827.html

單元測試是什麼?

      百度百科的解釋是這樣的:單元測試(模塊測試)是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。一般而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函數的行爲。例如,你可能把一個很大的值放入一個有序list 中去,而後確認該值出如今list 的尾部。或者,你可能會從字符串中刪除匹配某種模式的字符,而後確認字符串確實再也不包含這些字符了。html

     簡單的說,單元測試就是對你程序中最小的功能模塊進行測試,在c語言裏多是一個函數,java中多是一個方法或者類。java

目的就是爲了提升代碼的質量。git

junit是什麼?

     JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma創建,逐漸成爲源於Kent Beck的sUnit的xUnit家族中最爲成功的一個。 JUnit有它本身的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit做爲單元測試的工具。算法

也就是說junit就是別人寫好的單元測試框架,使用此框架你能夠大大縮短你的測試時間和準確度(筆者如今還記得大一剛來的的時候,c語言寫的小程序,每次都是重啓測試,那種編譯-輸入--中止-編譯的苦日子,很痛苦,今天用junit這個單元測試框架好多了)。小程序

 

注:eclipse已經自帶JUnit, JUnit的當前經常使用版本分爲3.X(須要手動添加),4.X(支持註解)數組

個人這個版本的eclipse自帶JUnit3.X的,本文以JUnit3.x爲例進行測試。框架

 

 

下面以 「求最大子數組之和」的例子,簡單的介紹一下單元測試是什麼,junit如何入門。eclipse

 

 1 package edu.sau.maximun;
 2 public class SubArray {
 3   //求兩個數中的最大
 4   public int max(int x, int y){
 5       if(x>y)
 6           return x;
 7       else
 8           return y;
 9   }
10   
11   //最大子數組之和
12   public int  maxSubArr(int[] arr){
13       int sum = arr[0];  //最大值子數組和
14       int sub_sum = arr[0];//中間值
15       
16       for(int i = 1; i<arr.length; i++){
17           sub_sum = max(arr[i],sub_sum+arr[i] );
18           sum = max(sub_sum,sum);
19       }
20       return sum;
21   }
22 }

 

 

 

以上代碼實現了「最大子數組之和」的算法,共有max和maxSubArr兩個方法,下面開始測試(從新建立一個新包,取名 test,全部測試都是再這個新包完成)函數

/**.sau.maximun.SubArray;
import junit.framework.TestCase;

/**
 * @author m
 * @單元測試
 * @time 2016/10/7
 */
public class TestMaximun extends TestCase {
    
    //對方法max進行測試
    public void testMax(){
        int x = 1;  //測試數據
        int y = 2;
        int z = -1;
        SubArray  sub = new SubArray();
        int result1 = sub.max(x, y);
        int result2 = sub.max(y,x);
        int result3 = sub.max(z, x);
        assertTrue(result1 == y);
        assertTrue(result2 == y);
        assertTrue(result3 == 1);
    }
    
    //對方法maxSubArr測試
    public void testMaxSubArr(){
        
        int arr1[] ={1,2,3,-1}; //測試用例
        int arr2[] = {1,2,-4,8,4,-4,6,-2,1};
        int  arr3[] ={-4,-2,-1,-3};
        int arr4[] = {-4,2,-4,2,-1};
        SubArray sub = new SubArray();
        
        
        assertTrue(sub.maxSubArr(arr1) == 6);
        assertTrue(sub.maxSubArr(arr2) == 14);
        assertTrue(sub.maxSubArr(arr3) == -1);
        assertTrue(sub.maxSubArr(arr4) == 2);
    }
}

 

 

整個文件的結構目錄以下:工具

 

 

程序單元測試的方法:-右擊 測試類->Run as ->JUnit test
 

運行結果:(Errors:0,Failure:0 說明測試經過,若是出錯,Failure是單元測試所指望的錯誤,說明你的代碼結果不知足你的要求,Errors須要你查看系統的配置,檢查代碼。是否是手動輸入快好多?)

 

 

 

說明:

 

總結:測試類須要繼承junit.framework.TestCase類,測試方法命名須要按照public void TestXXXX格式,經過斷言來判斷結果的正確行。

 

測試範圍必定要知足你的全部需求

   以測試testMaxSubArr爲例,具體的測試樣例及目的以下:  

用例編號

用例描述

       輸入數據 預期輸出數據 經過/不經過 評價
   1 檢測可否實現最大數組求和的基本功能(通常狀況) 1,2,3,-1 6 經過 程序實現基本功能
2 最大子數組處於數組中間(通常狀況) 1,2,-4,8,4,-4,6,-2,1 14 經過 程序實現基本功能
3 數組元素均爲負數,且第一個元素爲最小(特殊狀況) -4,-2,-1,-3 -1 經過 程序實現特殊狀況的求和
4 數組中存在最大值相同的多個(>=2)子數組(特殊狀況) -4,2,-4,2,-1 2 經過 程序能對多個相同子數組進行保留

如今你們已經會基本的單元測試,固然這只是很是簡單的使用junit,後期我會寫一些關於junit的更具體的介紹。

代碼下載地址: https://coding.net/u/fench/p/java-junit/git    

                                                                                                                                                                                        做者:fench

                                                                                                                                                                             2016-10-09 20:40:06

相關文章
相關標籤/搜索