JUnit檢視原始碼討論檢視歷史
JUnit由Kent Beck和Erich Gamma建立,是一個Java語言的單元測試框架,用於編寫和運行可重複的測試。Junit被視為開發高質量、可維護和可擴展的Java應用程序的關鍵工具之一。在使用JUnit進行單元測試時,需要注意一些事項,以確保測試的準確性和可維護性,例如命名規範、添加清晰的注釋和文檔、測試順序、超時設置、參數化測試、忽略測試等。
JUnit是用於編寫和運行Java程序單元測試的開源框架,由Kent Beck和Erich Gamma建立它提供了一組註解和斷言方法,以及用於執行測試的測試運行器。其現逐漸成為源於Kent Beck的sUnit的xUnit家族中最為成功的一個,被廣泛應用在Java開發領域中,成為標準的單元測試框架之一。
基本介紹
JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源於Kent Beck的sUnit的xUnit家族中最為成功的一個。JUnit有它自己的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit作為單元測試的工具。
JUnit是由Erich Gamma和Kent Beck編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什麼樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。
安裝
安裝很簡單,先到以下地址下載一個最新的zip包:
下載完以後解壓到你喜歡的目錄下,假設是JUNIT_HOME,然後將JUNIT_HOME下的junit.jar包加到你的系統的CLASSPATH環境變量中,對於IDE環境,對於需要用到的junit的項目增加到lib中,其設置不同的IDE有不同的設置,這裡不多講。
測試
最簡單的範例如下:
1、創建一個TestCase的子類
package junitfaq;
import java.util.*;
import junit.framework.*;
public class SimpleTest extends TestCase{
public SimpleTest(String name){
super(name);}
2、寫一個測試方法斷言期望的結果
public void testEmptyCollection(){
Collection collection=new ArrayList();
assertTrue(collection.isEmpty());}
注意:JUnit推薦的做法是以test作為待測試的方法的開頭,這樣這些方法可以被自動找到並被測試。
3、寫一個suite()方法,它會使用反射動態的創建一個包含所有的testXxxx方法的測試套件
public static Test suite(){
return new TestSuite(SimpleTest.class);
4、寫一個main()方法以文本運行器的方式方便的運行測試
public static void main(String args[]){
junit.textui.TestRunner.run(suite());
5、運行測試
以文本方式運行:
java junitfaq.SimpleTest
通過的測試結果是:
Time:0
OK(1 tests)
Time上的小點表示測試個數,如果測試通過則顯示OK。否則在小點的後邊標上Fail,表示該測試失敗。
每次的測試結果都應該是OK的,這樣才能說明測試是成功的,如果不成功就要馬上根據提示信息進行修正了。
如果JUnit報告了測試沒有成功,它會區分失敗(failures)和錯誤(errors)。失敗是你的代碼中的assert方法失敗引起的;而錯誤則是代碼異常引起的,例如ArrayIndexOutOfBoundsException。
以圖形方式運行:
java junit.swingui.TestRunner junitfaq.SimpleTest
通過的測試結果在圖形界面的綠色條部分。
以上是最簡單的測試樣例,在實際的測試中我們測試某個類的功能是常常需要執行一些共同的操作,完成以後需要銷毀所占用的資源(例如網絡連接、數據庫[1]連接,關閉打開的文件等),TestCase類給我們提供了setUp方法和tearDown方法,setUp方法的內容在測試你編寫的TestCase子類的每個testXxxx方法之前都會運行,而tearDown方法的內容在每個testXxxx方法結束以後都會執行。這個既共享了初始化[2]代碼,又消除了各個測試代碼之間可能產生的相互影響。
參考文獻
- ↑ SCI數據庫,河南師範大學圖書館, 2019-07-06
- ↑ 如何正確初始化項目,確保順利啟動?五大必知技巧! ,搜狐,2024-10-31