JUnit4.x的測試運行器
JUnit為單元測試提供了默認的測試運行器,它的測試方法都是由它負責執(zhí)行的
我們也可以定制自己的運行器,所有的運行器都繼承自org.junit.runner.Runner
還可以使用org.junit.runer.RunWith注解 為每個測試類指定使用具體的運行器
一般情況下,默認測試運行器可以應對絕大多數(shù)的單元測試要求
當使用JUnit提供的一些高級特性,或者針對特殊需求定制JUnit測試方式時
顯式的聲明測試運行必不可少了
JUnit4.x測試套件的創(chuàng)建步驟
、 創(chuàng)建一個空類作為測試套件的入口
、 使用org.junit.runner.RunWith 和org.junit.runners.Suite.SuiteClasses注解 修飾該空類
③ 將org.junit.runners.Suite 作為參數(shù)傳入RunWith注解,即使用套件運行器執(zhí)行此類
④ 將需要放入此測試套件的測試類組成數(shù)組,作為SuiteClasses注解的參數(shù)
⑤ 保證這個空類使用public 修飾,而且存在公開的不帶有任何參數(shù)的構造函數(shù)
下面是JUnit4.x中創(chuàng)建測試套件類的示例代碼
package com.jadyer.junit4;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
/**
* JUnit4.x測試套件的舉例
* @see 下面的CalculatorTest.class和ParameterTest.class均為我們自己編寫的JUnit4單元測試類
*/
@RunWith(Suite.class)
@SuiteClasses({CalculatorTest.class, ParameterTest.class})
public class TestAll {}
下面是JUnit3.8中創(chuàng)建測試套件類的示例代碼
package com.jadyer.junit3;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* JUnit3.8中批量運行所有的測試類。。直接在該類上Run As JUnit Test即可
* @see 這里用到了設計模式中典型的組合模式,即將不同的東西組合起來
* @see 組合之后的東西,即可以包含本身,又可以包含組成它的某一部分
* @see TestSuite本身是由TestCase來組成的,那么TestSuite里面可以包含TestCase
* @see 同時TestSuite里面還可以繼續(xù)包含TestSuite,形成一種遞歸的關系
* @see 這里體現(xiàn)出來了,所以這是一種非常非常好的設計模式,一種好的策略
*/
public class TestAll extends TestCase {
//方法名固定的,必須為public static Test suite()
public static Test suite() {
//TestSuite類實現(xiàn)了Test接口
TestSuite suite = new TestSuite();
//這里傳遞的是測試類的Class對象。該方法還可以接收TestSuite類型對象
suite.addTestSuite(CalculatorTest.class);
suite.addTestSuite(MyStackTest.class);
return suite;
}
}