如何編寫測試代碼肯定是開發人員最頭疼的。JUnit是一個非常強大的單元測試包,可以對一個/多個類的單個/多個方法測試,還可以將不同的TestCase組合成TestSuit,使測試工作自動化。
本文簡單介紹如何在eclipse中使用JUnit建立一個TestCase來測試一個簡單的類。
我們寫一個要測試的類Simple如下:
package jexi.test;
public class Simple {
private int n;
public Simple(int n) {
this.n = n;
}
// 返回絕對值:
public int foo() {
return n>0 ? n : (-n);
}
}
foo()方法返回絕對值,下一步,我們準備用JUnit對這個foo()方法進行全面測試。
首先,在eclipse中,建立一個java工程,把plugins/org.junit_3.8.1/junit.jar包含進去:
然後寫好Simple.java,為它建立一個JUnit Test Case:
在彈出的對話方塊中填入測試類別的名字:SimpleTest,勾上setUp():
編寫測試代碼:
package jexi.test;
import junit.framework.TestCase;
public class SimpleTest extends TestCase {
private Simple s1, s2;
protected void setUp() throws Exception {
super.setUp();
s1 = new Simple(10);
s2 = new Simple(-7);
}
public void testFoo() {
assertTrue(s1.foo()==10);
assertTrue(s2.foo()==7);
}
}
其中setUp()方法是構造初始化環境,我們在setUp中建立兩個Simple的執行個體,testFoo()是用來測試foo()的測試方法,總是以test+方法名構成,然後在測試方法中測試:s1.foo()==10,如果傳回值與期待的結果10相等,assertTrue()就執行成功,我們現在可以運行Run->Run As...->JUnit Test,左側會顯示測試結果:
如果我們把Simple的foo()方法改成:
public int foo() {
return n;
}
再次運行JUnit Test,現在assertTrue(s2.foo()==7);測試結果就不正確了,JUnit會報告哪一行結果不正確:
雙擊就可以快速定位到測試失敗的方法調用上。
總結:
JUnit功能非常強大,是代碼品質的可靠保證。精心設計的TestCase可以反覆使用,將來對某個類進行了更改,只需要運行一遍TestCase就知道改動對用戶端有無影響。若干個TestCase還可以組合成TestSuit,結合Ant使得編譯,測試,運行整個過程自動化,只需要查看測試結果就可以知道哪些代碼出了問題。