java中Junit測試

來源:互聯網
上載者:User

標籤:==   程式   nbsp   測試架構   failure   cin   ges   簡單的   boolean   

java中Junit測試問題一:JUnit中什麼時候使用assertTrue,assertFalse語句
assertTrue(boolean condition);

condition:如果condition結果為true,則通過測試.

assertFalse(boolean condition);

condition:如果condition結果為false,則通過測試.

 

問題二:java使用Junit測試執行個體

參考:

java如何使用JUnit進行單元測試 - Fench - 部落格園
http://www.cnblogs.com/fench/p/5936008.html

 

 單元測試是什嗎?

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

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

目的就是為了提高代碼的品質。

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如何入門。

 

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

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

 

 1 package edu.sau.maximun.test; 2  3 import edu.sau.maximun.SubArray; 4 import junit.framework.TestCase; 5  6 public class TestMaximun extends TestCase { 7      8     //對方法max進行測試 9     public void testMax(){10         int x = 1;  //測試資料11         int y = 2;12         int z = -1;13         SubArray  sub = new SubArray();14         int result1 = sub.max(x, y);15         int result2 = sub.max(y,x);16         int result3 = sub.max(z, x);17         assertTrue(result1 == y);18         assertTrue(result2 == y);19         assertTrue(result3 == 1);20     }21     22     //對方法maxSubArr測試23     public void testMaxSubArr(){24         25         int arr1[] ={1,2,3,-1}; //測試案例26         int arr2[] = {1,2,-4,8,4,-4,6,-2,1};27         int  arr3[] ={-4,-2,-1,-3};28         int arr4[] = {-4,2,-4,2,-1};29         SubArray sub = new SubArray();30         31         32         assertTrue(sub.maxSubArr(arr1) == 6);33         assertTrue(sub.maxSubArr(arr2) == 14);34         assertTrue(sub.maxSubArr(arr3) == -1);35         assertTrue(sub.maxSubArr(arr4) == 2);36     }37 }

 

整個檔案的結構目錄如下:

 

 

程式單元測試的方法:-右擊 測試類別->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    

                                                                                                                                                                 

 

 

 

 

 

 

 

 

 

java中Junit測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.