您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
怎樣使用Junit Framework進(jìn)行單元測(cè)試的編寫(xiě)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/5/7 11:30:54 ] 推薦標(biāo)簽:

在公開(kāi)內(nèi)部狀態(tài)數(shù)據(jù)後,我們可以編寫(xiě)我們的測(cè)試單元了,單元測(cè)試的選擇方法和選擇尺度已經(jīng)在本文前面章節(jié)進(jìn)行了說(shuō)明,
但是仍然需要注意的是,由于assert方法會(huì)拋出一個(gè)error,你應(yīng)該在測(cè)試方法的后集中用assert相關(guān)方法進(jìn)行判斷,
這樣可以確保資源得到釋放。

對(duì)數(shù)據(jù)庫(kù)連接池的例子,我們可以建立測(cè)試類(lèi)DefaultConnectionProxyTest,同時(shí)建立數(shù)個(gè)test case,如下

示例二
/**
* 這個(gè)類(lèi)對(duì)示例一中的類(lèi)進(jìn)行簡(jiǎn)單的測(cè)試。
*
*/
public class DefaultConnectionProxyTest extends TestCase {
private DefaultConnectionProxy conProxy = null;
private OracleConnectionCacheImpl cacheImpl = null;
private Connection con = null;

/** 設(shè)置測(cè)試的fixture,建立必要的測(cè)試起始環(huán)境。
*/
protected void setUp() {
conProxy = new DefaultConnectionProxy();
conProxy.start();
cacheImpl = conProxy.getConnectionCache();
}

/** 對(duì)示例一中的對(duì)象進(jìn)行服務(wù)啟動(dòng)后的狀態(tài)測(cè)試,檢查是否在服務(wù)啟動(dòng)后,
連接池的參數(shù)設(shè)置是否正確。
*/
public void testConnectionProxyStart() {
int minConnections = 0;
int maxConnections = 0;

assertNotNull(cacheImpl);

try{
minConnections = Integer.parseInt(PropertyManager.getProperty
("DefaultConnectionProxy.minConnections"));
maxConnections = Integer.parseInt(PropertyManager.getProperty
("DefaultConnectionProxy.maxConnections"));
} catch (Exception e) {
// ignore the exception
}

assertEquals(cacheImpl.getMinLimit(), minConnections);
assertEquals(cacheImpl.getMaxLimit(), maxConnections);
assertEquals(cacheImpl.getCacheSize(), minConnections);
}

/** 對(duì)示例一中的對(duì)象進(jìn)行獲取數(shù)據(jù)庫(kù)連接的測(cè)試,看看是否可以獲取有效的數(shù)據(jù)庫(kù)連接,
并且看看獲取連接后,連接池的狀態(tài)是否按照既定的策略進(jìn)行變化。由于assert方法拋出的是
error對(duì)象,因此盡可能把a(bǔ)ssert方法放置到方法的后集體進(jìn)行測(cè)試,這樣在方法內(nèi)打開(kāi)的
資源,才能有效的被正確關(guān)閉。
*/
public void testGetConnection() {
int cacheSize = cacheImpl.getCacheSize();
int activeSize = cacheImpl.getActiveSize();
int cacheSizeAfter = 0;
int activeSizeAfter = 0;

con = conProxy.getConnection();

if (con != null) {
activeSizeAfter = cacheImpl.getActiveSize();
cacheSizeAfter = cacheImpl.getCacheSize();

try{
con.close();
} catch (SQLException e) {
}
} else {
assertNotNull(con);
}

/*如果連接池中的實(shí)際使用連接數(shù)小于緩存連接數(shù),檢查獲取的新的數(shù)據(jù)連接是否
從緩存中獲取,反之連接池是否建立新的連接
*/
if (cacheSize > activeSize){
assertEquals(activeSize + 1, activeSizeAfter);
assertEquals(cacheSize, cacheSizeAfter);
} else {
assertEquals(activeSize + 1, cacheSizeAfter);
}
}

/** 對(duì)示例一中的對(duì)象進(jìn)行數(shù)據(jù)庫(kù)連接釋放的測(cè)試,看看連接釋放后,連接池的
狀態(tài)是否按照既定的策略進(jìn)行變化。由于assert方法拋出的是error對(duì)象,因此盡可
能把a(bǔ)ssert方法放置到方法的后集體進(jìn)行測(cè)試,這樣在方法內(nèi)打開(kāi)的
資源,才能有效的被正確關(guān)閉。
*/
public void testConnectionClose() {
int minConnections = cacheImpl.getMinLimit();
int cacheSize = 0;
int activeSize = 0;
int cacheSizeAfter = 0;
int activeSizeAfter = 0;

con = conProxy.getConnection();

if (con != null) {
cacheSize = cacheImpl.getCacheSize();
activeSize = cacheImpl.getActiveSize();

try{
con.close();
} catch (SQLException e) {
}

activeSizeAfter = cacheImpl.getActiveSize();
cacheSizeAfter = cacheImpl.getCacheSize();
} else {
assertNotNull(con);
}

assertEquals(activeSize, activeSizeAfter + 1);

上一頁(yè)123下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd