JUnit使用經(jīng)驗(yàn)(3) -- 轉(zhuǎn)自PMT雜志
發(fā)表時(shí)間:2024-06-05 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]JUnit使用經(jīng)驗(yàn)3原作Andy Schneider Richard Dallaway 等編譯PMT 測(cè)試工作組經(jīng)驗(yàn)八、書寫測(cè)試時(shí)要考慮地區(qū)和國(guó)家設(shè)置比如某個(gè)測(cè)試要使用日期,下面的代碼就是創(chuàng)建日期對(duì)象的一種方法Date date = DateFormat.getInstance ().parse ...
JUnit使用經(jīng)驗(yàn)3
原作Andy Schneider Richard Dallaway 等
編譯PMT 測(cè)試工作組
經(jīng)驗(yàn)八、書寫測(cè)試時(shí)要考慮地區(qū)和國(guó)家設(shè)置比如某個(gè)測(cè)試要使用日期,下面的代碼就是創(chuàng)建日期對(duì)象的一種方法
Date date = DateFormat.getInstance ().parse ("dd/mm/yyyy");
但是如果運(yùn)行上面測(cè)試代碼的機(jī)器采用不同的地區(qū)國(guó)家設(shè)置,那么就會(huì)有問(wèn)題。因此我們最好用下面的另
一種方法:
Calendar cal = Calendar.getInstance ();
Cal.set (yyyy, mm-1, dd);
Date date = Calendar.getTime ();
顯然,第二種方法能夠適應(yīng)地區(qū)國(guó)家設(shè)置的變化。
經(jīng)驗(yàn)九、利用Junit 的自動(dòng)異常處理書寫簡(jiǎn)潔的測(cè)試代碼很多Junit 的初學(xué)者經(jīng)常會(huì)寫出類似下面的這些代碼
public void exampleTest () {
try {
// do some test
} catch (SomeApplicationException e) {
fail ("Caught SomeApplicationException exception");
}
}
事實(shí)上在Junit 中使用try-catch 來(lái)捕獲異常是沒(méi)有必要的,Junit 會(huì)自動(dòng)捕獲異常。那些沒(méi)有被捕獲的異常就
被當(dāng)成錯(cuò)誤處理。所以上面的代碼很冗余,完全可以寫成下面等效卻簡(jiǎn)潔得多的代碼:
public void exampleTest () throws SomeApplicationException {
// do some test
}
更少的測(cè)試代碼也更容易讀懂更容易維護(hù)。
經(jīng)驗(yàn)十、充分利用Junit 的assert/fail 方法Junit 有豐富而靈活的assert/fail 方法,如何用好這些方法也是大有講究的。比如下面的寫法就不大好
assert (creds == 3);
不如寫成
assertEquals ("The number of credentials should be 3", 3, creds);
第二種寫法不僅易于閱讀,而且在執(zhí)行時(shí)如果fail 也可以向測(cè)試人員提供更多的信息。
Junit 也有支持浮點(diǎn)數(shù)的assert方法,干凈利索如下例
assertEquals ("some message", result, expected, delta);
另外要一提的是:
assertSame()用來(lái)測(cè)試兩個(gè)引用是否指向同一個(gè)對(duì)象
assertEquals()用來(lái)測(cè)試兩個(gè)對(duì)象是否相等經(jīng)驗(yàn)十一、確保測(cè)試代碼與時(shí)間無(wú)關(guān)盡量避免可能過(guò)期的測(cè)試數(shù)據(jù),這種數(shù)據(jù)應(yīng)該可以手工或者自動(dòng)的刷新。另外還有一個(gè)技巧就是在使用這些
數(shù)據(jù)前更改系統(tǒng)的當(dāng)前日期,數(shù)據(jù)操作結(jié)束后再恢復(fù)日期。當(dāng)然,使用這一技巧要注意可能的副作用。
經(jīng)驗(yàn)十二、使用文檔生成器做測(cè)試文檔我們當(dāng)然可以使用文本編輯器來(lái)書寫單元測(cè)試的文檔,但是更好的方法是使用文檔生成器比如JavaDoc自
動(dòng)生成,這樣我們就不需擔(dān)心實(shí)現(xiàn)和文檔之間的同步問(wèn)題。自動(dòng)生成的文檔格式統(tǒng)一錯(cuò)誤也少。