JUnit介紹

 一、JUnit簡介
 JUnit是基於面向對象構建的java單無測試框架。
 JUnit是開放源代碼項目,可按需要進行擴展。
 
二、安裝JUnit
 首先獲取JUnit的軟件包,從http://www.junit.org下載最新的軟件包。
 將軟件包在適當的目錄下解包。
 這樣在安裝目錄下找到一個名爲junit.jar的文件,將這個jar文件加入CLASSPATH系統變量。

三、JUnit框架介紹:
一)TestCase--測試用例,對每個測試類,都要定義一個測試用例。
JUnit支持兩種運行單個測試的方法:靜態的和動態的方法。
1、靜態的方法就是覆蓋TestCase類的runTest()方法,一般是採用內部類的方式創建一個測試實例:
TestCase test01 = new testCar("test getWheels") {
 public void runTest() {
  testGetWheels();
 }
}
採用靜態的方法要注意要給每個測試一個名字,這樣你就可以區分哪個測試失敗了。

2、動態的方法是用內省來實現runTest()以創建一個測試實例。這要求測試的名字就是需要調用的測試方法的名字:
TestCase test01 = new testCar("testGetWheels");
JUnit會動態查找並調用指定的測試方法。動態的方法很簡潔,但如果你鍵入了錯誤的名字就會得到一個令人奇怪的 NoSuchMethodException異常。動態的方法和靜態的方法都很好,你可以按照自己的喜好來選擇。

二)TestSuite
一旦你創建了一些測試實例,下一步就是要讓他們能一起運行。我們必須定義一個TestSuite。在JUnit中,這就要求你在TestCase類中定義一個靜態的suite()方法。suite()方法就像main()方法一樣,JUnit用它來執行測試。在suite()方法中,你將測試實例加到一個 TestSuite對象中,並返回這個TestSuite對象。一個TestSuite對象可以運行一組測試。
TestSuite和TestCase都實現了Test接口,而Test接口定義了運行測試所需的方法。這就允許你用TestCase和 TestSuite的組合創建一個TestSuite。
public static Test suite() {
 TestSuite suite= new TestSuite();
 suite.addTest(new testCar("testGetWheels"));
 suite.addTest(new testCar("testGetSeats"));
 return suite;
}
public static Test suite() {
 return new TestSuite(testCar.class);
}

三)TestRunner
有了TestSuite我們就可以運行這些測試了,JUnit提供了三種界面來運行測試
[Text UI] junit.textui.TestRunner
[AWT UI] junit.awtui.TestRunner
[Swing UI] junit.swingui.TestRunner
java junit.textui.TestRunner yourTestclass

Fixture
如果需要在一個或若干個的類執行多個測試,這些類就成爲了測試的context。在JUnit中被稱爲Fixture。當你編寫測試代碼時,你會發現你花費了很多時間配置/初始化相關測試的Fixture。將配置Fixture的代碼放入測試類的構造方法中並不可取,因爲我們要求執行多個測試,我並不希望某個測試的結果意外地(如果這是你要求的,那就另當別論了)影響其他測試的結果。通常若干個測試會使用相同的Fixture,而每個測試又各有自己需要改變的地方。
爲此,JUnit提供了兩個方法,定義在TestCase類中。

protected void setUp() throws java.lang.Exception
protected void tearDown() throws java.lang.Exception

覆蓋setUp()方法,初始化所有測試的Fixture,如建立數據庫連接,將每個測試略有不同的地方在testXXX()方法中進行配置。
覆蓋tearDown(),釋放你在setUp()中分配的永久性資源,如數據庫連接。
當JUnit執行測試時,它在執行每個testXXXXX()方法前都調用setUp(),而在執行每個testXXXXX()方法後都調用 tearDown()方法,由此保證了測試不會相互影響。

四)Assert
Assert類中定義了相當多的assert方法,主要有assert(),assertEquals(), assertNull(), assertSame(), assertTrue(), fail()等方法。

Faile失敗是一個期望的被assert方法檢查到的結果。
Error錯誤則是意外的問題引起的,如ArrayIndexOutOfBoundsException。


四、測試流程:
1. 擴展TestCase類;
2. 覆蓋runTest()方法(可選);
3. 對應測試目標類書寫testXXXXX()方法;
4、擴展TestSuite類,重載suite()方法,實現自定義的測試過程;
5. 運行TestRunner進行測試;

轉:http://www.blog.edu.cn/user1/5897/archives/2006/1101312.shtml

發佈了37 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章