登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。

JUnit

Java Opensources for Web Development Part I: Chapter 4 在 Java 中進行各種單元測試
Lession 15 : JUnit

* Category: Test
* Project Name: JUnit
* WebSite: https://www.junit.org/
* License: Common Public License
* Last version: 4.3 ( 2007/3 )

我們在開發的同時,往往需要進行單元測試,主要目的就是要保證與判斷是否有 Bug 是否結果回傳是正確的。所以當單元測試是如此重要,加上 Test-Driven 的開發流程理念發萌,筆者認為測試是工程師基本的技能之一,每個工程師都應該為自己撰寫的程式進行單元測試,來設計各種不同的元件。

在 Java 進行測試應該就是採用 JUnit 最多,已經儼然成為一個標準,他的本身核心並不複雜,讓測試可以更為簡單,也可以配合 ant (Lesson 2) 進行自動化測試,讓整套系統可以透過撰寫的 script 進行完整測試。

◎ 自行測試的方法

往往在 Web 開發,我通常會對 Facade 或 Delegate 進行測試,假設 BizFacade 之中有一個 int addNum(int a, int b); 這個 method。 主要回傳 a+b 的數值。

BizFacade.java
public class BizFacade {
public int addNum(int a, int b) {
return a+b;
}
}
以往我們進行測試,就是撰寫一個具有 main 進入點的小程式
BizFacadeTest.java
public class BizFacadeTest {
public static void main(String[] args) {
BizFacade bf = new BizFacade();
if( bf.addNum(2,3) == 5 ) System.out.println(“TEST OK”);
else System.out.println(“TEST FAIL”);
}
}
如果執行 BizFacadeTest 印出 TEST OK,就是代表 BizFacade 的程式撰寫正確,當然,測試往往不會只有一個程式,所以每次都要利用小 main Application 來進行測試,對於忙碌的工程師來說,是個沉重的負擔。

◎ 使用 JUnit 成為測試框架

我們要將 junit.jar 放到 classpath 之中,我們就可以重新撰寫 Test 程式改為

BizFacadeTest.java
import junit.framework.TestCase;
public class BizFacadeTest extends TestCase {
public testAddNum() {
assertEquals(5, new BizFacade().addNum(2,3));
}
}
當我們執行 TestRunner 就是去判斷 BizFacade 中的 addNum 是否等於 (Equals) 5。如果回傳是 5,則會回報測試成功。注意,該 test method 一定要是以 test 為開頭。

當你使用 JDK 1.5 以上的版本,配合 JUnit 4 以上的版本,就可以使用 @Annotations 的方式來進行測試。

BizFacadeTest.java
import org.junit.*;
import static org.junit.Assert.assertEquals;
public class BizFacadeTest {
@Test
public addNum() {
assertEquals(5, new BizFacade().addNum(2,3));
}
}
其他操作的技巧可以使用它的 samples 進行測試。



自由軟體鑄造場電子報 : 第 77 期 人才資料庫活動得獎名單揭曉

分類: 技術專欄