1. 程式人生 > >談談單元測試之(二):測試工具 JUnit 3

談談單元測試之(二):測試工具 JUnit 3


前言


上一篇文章《 為什麼要進行煩人的單元測試?》討論了一下現階段軟體開發中,程式設計師們測試情況的現狀。這篇文章中,我打算介紹一下單元測試的工具(外掛),並且推薦大家以後在開發中,真正的用上單元測試,用好單元測試。

說明


這篇文章的主題,主要是介紹一下 JUnit 3,雖然 JUnit 3 已經不推薦使用了,但它也曾是風靡一時。這裡旨在討論一下 JUnit 3 的使用,以及它的內部構造,就當是為下一篇文章介紹 JUnit 4 做鋪墊吧。之前已經把單元測試的重要性都講出來了,這裡就不再贅述了,直接進入正題。

介紹


JUnit 是由 Erich Gamma 和 Kent Beck 編寫的一個迴歸測試框架(regression testing framework)。JUnit 測試是程式設計師測試,即所謂白盒測試。它是一個 Java 語言的測試框架,多數 Java 的開發環境都已經集成了 JUnit 作為單元測試的工具。

特性

  • 用於測試期望結果的斷言(Assertion)
  • 用於共享共同測試資料的測試工具
  • 用於方便的組織和執行測試的測試套件
  • 圖形和文字的測試執行器

使用


下載



加入專案

  • 把壓縮包中的 junit3.8.1.jar 檔案,加入到專案的 classpath 中。


基本流程

  • 寫測試類並繼承 TestCase 類
  • 寫測試方法 testXXX()
  • 寫測試套件類,將 test case 加入到 test suite
  • 執行JUnit Test 進行測試

演示程式碼


[java] view plain copy print ?
  1. <span style=“font-family:Microsoft YaHei;”>package com.tgb.test;  
  2.   
  3. import junit.framework.Assert;  
  4. import junit.framework.Test;  
  5. import junit.framework.TestCase;  
  6. import junit.framework.TestSuite;  
  7.   
  8. // 1. 繼承 TestCase 類  
  9. public class CalculatorTest extends TestCase {  
  10.     // 2. 測試方法必須以 test 開頭  
  11.     public void testAdd() {  
  12.         int result = new Calculator().add(12);  
  13.         Assert.assertEquals(3, result);  
  14.     }  
  15.       
  16.     // 3. 將 testcase 加入 testsuite,可以同時測試多個用例  
  17.     public static Test suite() {  
  18.         return new TestSuite(CalculatorTest.class);  
  19.     }  
  20. }</span>  
<span style="font-family:Microsoft YaHei;">package com.tgb.test;

import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

// 1. 繼承 TestCase 類
public class CalculatorTest extends TestCase {
    // 2. 測試方法必須以 test 開頭
    public void testAdd() {
        int result = new Calculator().add(1, 2);
        Assert.assertEquals(3, result);
    }

    // 3. 將 testcase 加入 testsuite,可以同時測試多個用例
    public static Test suite() {
        return new TestSuite(CalculatorTest.class);
    }
}</span>


剖析概念

  • TestCase(測試用例)
當一個類繼承 JUnit 的 TestCase 類,即成為一個測試類,而且,測試類中的方法必須以 test 開頭,比如:testAdd() 等。
  • TestSuite(測試套件)
TestSuite 是一組測試,目的在於將相關的測試用例歸入一組。當執行一個 Test Suite 時,就會執行組內所有的測試方法,這就避免了繁瑣的測試步驟。當然,如果沒有為 test case 寫 test suite 的話,系統會預設為每個 test case 生成一個 test suite。
  • Assert(斷言)
Assert 用於檢查條件是否成立,當條件成立則 Assert 方法通過,否則會丟擲異常。例如,Assert.assertEquals(3, result); 判斷 result 是否跟期望的3想等,如果想等則通過,否則測試失敗。
主要有如下幾個斷言方法:
assertTrue/False():判斷一個條件是 true 還是 false。
fail():失敗,可以有訊息,也可以沒有訊息。
assertEquals():判斷是否想等,可以指定輸出錯誤資訊。注意不同資料型別所使用的 assertEquals 方法引數有所不同。
assertNotNull/Null():判斷一個物件是否為空。
assertSame/NotSame():判斷兩個物件是否指向同一個物件。
failNotSame/failNotEquals():當不指向同一個記憶體地址或者不相等的時候,輸出錯誤資訊。錯誤資訊為指定的格式。
  • setUp
每次測試方法執行之前,都會執行 setUp 方法,此方法用於進行一些固定的準備工作,比如,例項化物件,開啟網路連線等。
  • tearDown
每次測試方法執行之後,都會執行 tearDown 方法,此方法用於進行一些固定的善後工作,比如,關閉網路連線等。

結束語


JUnit 3 就介紹到這,可以看出,JUnit 3 還是很簡單的,只不過在每次編寫測試類時,都需要繼承 TestCase 類,這就無形之中給測試類增加了一些牽絆。下一篇文章中,我們一起來討論一下 JUnit 4 的一些新特性,以及是如何簡化測試用例的。
不要著急哦,下一篇馬上就到。。。



【原創】地址:http://blog.csdn.net/happylee6688/article/details/38059833


前言


上一篇文章《 為什麼要進行煩人的單元測試?》討論了一下現階段軟體開發中,程式設計師們測試情況的現狀。這篇文章中,我打算介紹一下單元測試的工具(外掛),並且推薦大家以後在開發中,真正的用上單元測試,用好單元測試。

說明


這篇文章的主題,主要是介紹一下 JUnit 3,雖然 JUnit 3 已經不推薦使用了,但它也曾是風靡一時。這裡旨在討論一下 JUnit 3 的使用,以及它的內部構造,就當是為下一篇文章介紹 JUnit 4 做鋪墊吧。之前已經把單元測試的重要性都講出來了,這裡就不再贅述了,直接進入正題。

介紹


JUnit 是由 Erich Gamma 和 Kent Beck 編寫的一個迴歸測試框架(regression testing framework)。JUnit 測試是程式設計師測試,即所謂白盒測試。它是一個 Java 語言的測試框架,多數 Java 的開發環境都已經集成了 JUnit 作為單元測試的工具。

特性

  • 用於測試期望結果的斷言(Assertion)
  • 用於共享共同測試資料的測試工具
  • 用於方便的組織和執行測試的測試套件
  • 圖形和文字的測試執行器

使用


下載



加入專案

  • 把壓縮包中的 junit3.8.1.jar 檔案,加入到專案的 classpath 中。


基本流程

  • 寫測試類並繼承 TestCase 類
  • 寫測試方法 testXXX()
  • 寫測試套件類,將 test case 加入到 test suite
  • 執行JUnit Test 進行測試

演示程式碼


[java] view plain copy print ?
  1. <span style=“font-family:Microsoft YaHei;”>package com.tgb.test;  
  2.   
  3. import junit.framework.Assert;  
  4. import junit.framework.Test;  
  5. import junit.framework.TestCase;  
  6. import junit.framework.TestSuite;  
  7.   
  8. // 1. 繼承 TestCase 類  
  9. public class CalculatorTest extends TestCase {  
  10.     // 2. 測試方法必須以 test 開頭  
  11.     public void testAdd() {  
  12.         int result = new Calculator().add(12);  
  13.         Assert.assertEquals(3, result);  
  14.     }  
  15.       
  16.     // 3. 將 testcase 加入 testsuite,可以同時測試多個用例  
  17.     public static Test suite() {  
  18.         return new TestSuite(CalculatorTest.class);  
  19.     }  
  20. }</span>  
<span style="font-family:Microsoft YaHei;">package com.tgb.test;

import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

// 1. 繼承 TestCase 類
public class CalculatorTest extends TestCase {
    // 2. 測試方法必須以 test 開頭
    public void testAdd() {
        int result = new Calculator().add(1, 2);
        Assert.assertEquals(3, result);
    }

    // 3. 將 testcase 加入 testsuite,可以同時測試多個用例
    public static Test suite() {
        return new TestSuite(CalculatorTest.class);
    }
}</span>


剖析概念

  • TestCase(測試用例)
當一個類繼承 JUnit 的 TestCase 類,即成為一個測試類,而且,測試類中的方法必須以 test 開頭,比如:testAdd() 等。
  • TestSuite(測試套件)
TestSuite 是一組測試,目的在於將相關的測試用例歸入一組。當執行一個 Test Suite 時,就會執行組內所有的測試方法,這就避免了繁瑣的測試步驟。當然,如果沒有為 test case 寫 test suite 的話,系統會預設為每個 test case 生成一個 test suite。
  • Assert(斷言)
Assert 用於檢查條件是否成立,當條件成立則 Assert 方法通過,否則會丟擲異常。例如,Assert.assertEquals(3, result); 判斷 result 是否跟期望的3想等,如果想等則通過,否則測試失敗。
主要有如下幾個斷言方法:
assertTrue/False():判斷一個條件是 true 還是 false。
fail():失敗,可以有訊息,也可以沒有訊息。
assertEquals():判斷是否想等,可以指定輸出錯誤資訊。注意不同資料型別所使用的 assertEquals 方法引數有所不同。
assertNotNull/Null():判斷一個物件是否為空。
assertSame/NotSame():判斷兩個物件是否指向同一個物件。
failNotSame/failNotEquals():當不指向同一個記憶體地址或者不相等的時候,輸出錯誤資訊。錯誤資訊為指定的格式。
  • setUp
每次測試方法執行之前,都會執行 setUp 方法,此方法用於進行一些固定的準備工作,比如,例項化物件,開啟網路連線等。
  • tearDown
每次測試方法執行之後,都會執行 tearDown 方法,此方法用於進行一些固定的善後工作,比如,關閉網路連線等。

結束語


JUnit 3 就介紹到這,可以看出,JUnit 3 還是很簡單的,只不過在每次編寫測試類時,都需要繼承 TestCase 類,這就無形之中給測試類增加了一些牽絆。下一篇文章中,我們一起來討論一下 JUnit 4 的一些新特性,以及是如何簡化測試用例的。
不要著急哦,下一篇馬上就到。。。