亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Junit 的使用經驗總結

2019-11-18 15:31:26
字體:
來源:轉載
供稿:網友

經驗一、不要在測試用例的構造函數中做初始化
當我們需要增加一個測試時,我們要書寫一個自己的測試用例,比如sometest。假如你喜歡在sometest的
構造函數中做有關的初始化工作,這可不是個好習慣。如下例:

public class sometest extends testcase{
public sometest(string testname){
super(testname);
//初始化代碼
}
}
一旦初始化代碼產生異常,比如illegalstateexception,junit隨之將產生一個assertionfailederror,
并顯示類似下面的出錯信息:
junit . framework . assertionfailederror : cannotinstantiatetestcase : test1at
junit . framework . assert . fail ( assert . java : 143 ) at
junit . framework . testsuite$1 . runtest ( testsuite . java : 178 ) at
junit . framework . testcase . runbare ( testcase . java : 129 ) at
junit . framework . testresult$1 . PRotect ( testresult .java : 100 ) at
junit . framework . testresult . runprotected ( testresult. java: 117 ) at
junit . framework . testresult . run ( testresult. java : 103 ) at
junit . framework . testcase . run( testcase . java: 120 ) at
junit . framework . testsuite . run( testsuite . java , compiledcode ) at
junit . ui . testrunner$12 . run (testrunner. java : 429 )
這一大堆出錯信息只會讓人一頭霧水,我們只知道junit無法實例化某個測試用例,到底出了什么問題,在
哪兒出錯了呢?不知道!
那么好的做法是怎樣呢?
答案是重載測試用例的setup()方法進行初始化。當setup()中的初始化代碼產生異常時我們得到的
是類似下面的出錯信息:
java . lang . illegalstateexception : oopsatbp . dtc . setup ( dtc .java: 34 ) at
junit . framework  . testcase . runbare ( testcase .java: 127 ) at
junit . framework  . testresult$ 1 . protect(testresult . java : 100 ) at
junit . framework  . testresult . runprotected ( testresult . java: 117 ) at
junit . framework  . testresult . run ( testresult .java : 103 )
...
顯然這要清楚得多我們一下子就可以知道是在dtc.java 的第34 行產生了illegalstateexception

經驗二、不要假定測試用例中測試的執行次序
我們知道在一個junit 的測試用例類中可以包含多個測試,每個測試其實就是一個method。在下面的例子
中有兩個不同的測試,盡管testdothisfirst()在位置上先于testdothissecond(),但我們不能就此假定
testdothisfirst()會先執行。
public class sometestcase extends testcase{
public sometestcase(string testname){
super(testname);
}
public void testdothisfirst(){
...
}
public void testdothissecond(){
}
}
由于junit 內部使用一個vector 來存儲所有的test,因此在不同的操作系統和java 虛擬機上,test 的執行
次序是不可猜測的。
好的習慣是保持測試之間的獨立性,使得它們在任何次序下執行的結果都是相同的。假如真得需要某些測試
按照特定的次序執行,我們可以借助addtest 來實現。如下例:
public static testsuite(){
suite.addtest(new sometestcase(“testdothisfirst”;));
suite.addtest(new sometestcase(“testdothissecond”;));
return suite;
}
這樣我們可以確保junit先執行testdothisfirst(),然后執行testdothissecond()。

經驗三、測試要避免人工干預
假如某段測試代碼需要人工干預,那至少有兩個不良后果:一則不能被包括在自動測試中,比如夜間的回
歸測試;二則不能被重復執行,例如數據刪除的測試不能做完刪除就萬事大吉,比較好的做法是自動補上
刪除掉的數據。經驗二講的是不同的測試要避免相關性,而經驗三講的其實就是測試要避免自相關。
經驗四、在子類中調用父類的setup() 和teardown()讓我們看一看下面的代碼
public class sometestcase extends anothertestcase {
// a connection to a database
private database thedatabase;
public sometestcase (string testname) {
super (testname);
}
public void testfeaturex () {
...
}
public void setup () {
// clear out the database
thedatabase.clear ();
}
}
你發現其中的錯誤了嗎?setup()應該調用super.setup() 以確保anothertestcase 中定義的父類的環境被初
始化了。當然這也有例外,就是基類可以處理任意的測試數據。

進入討論組討論。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品在线欧美视频| 欧美午夜片欧美片在线观看| 中文日韩在线视频| 国产精品入口福利| 欧美午夜片在线免费观看| 国产午夜精品美女视频明星a级| 久久久精品免费| 成人有码在线视频| 4p变态网欧美系列| 国产亚洲福利一区| 蜜臀久久99精品久久久无需会员| 亚洲欧美资源在线| 成人黄在线观看| 国产精品一二三视频| 神马久久久久久| 欧美精品18videos性欧美| 亚洲国产精品久久久久久| 一区二区国产精品视频| 久久久久一本一区二区青青蜜月| 日韩电视剧在线观看免费网站| 韩国日本不卡在线| 亚洲欧洲日本专区| 久久精品视频va| 欧美日韩中文在线观看| 欧美一级黑人aaaaaaa做受| 欧美限制级电影在线观看| 欧美成人午夜激情视频| 欧美做受高潮1| 国产午夜精品美女视频明星a级| 日韩黄色高清视频| 欧美精品福利在线| 国产精品电影在线观看| 欧美性xxxxxx| 国产欧美日韩精品丝袜高跟鞋| 成人日韩av在线| 一区二区三区国产视频| 欧美性猛交xxxx黑人| 久久亚洲电影天堂| 97在线视频免费播放| 免费av一区二区| 亚洲成人精品久久| 日本欧美精品在线| 亚洲天堂av在线免费观看| 国产精品99久久久久久人| 国产日韩一区在线| 久久人人爽亚洲精品天堂| 国产拍精品一二三| 日韩av在线最新| 国产成人精品a视频一区www| 中文字幕精品一区久久久久| 欧美在线视频一区二区| 欧美日韩国产一区在线| 日韩欧美亚洲国产一区| 精品国产91乱高清在线观看| 亚洲已满18点击进入在线看片| 亚洲一区中文字幕在线观看| 日本高清不卡在线| 中文字幕视频在线免费欧美日韩综合在线看| 一夜七次郎国产精品亚洲| 亚洲综合在线中文字幕| 久久久久久久激情视频| 自拍偷拍免费精品| 精品一区二区三区四区| www.亚洲人.com| 日韩精品福利在线| 亚洲精品wwww| 久久久伊人欧美| 欧美国产日韩一区二区在线观看| 亚洲第一av在线| 国产精品视频在线播放| 日本老师69xxx| 久久久爽爽爽美女图片| 亚洲天堂第一页| 精品露脸国产偷人在视频| 日韩一级黄色av| 日韩电影在线观看中文字幕| 国产精品吴梦梦| 久久中文精品视频| 欲色天天网综合久久| 91在线看www| 97在线免费观看视频| 26uuu国产精品视频| 亚洲第一中文字幕在线观看| 国产精品一久久香蕉国产线看观看| 国产精品入口夜色视频大尺度| 8x海外华人永久免费日韩内陆视频| 国产日韩在线一区| 欧美精品国产精品日韩精品| 精品久久久久久亚洲精品| 欧美一区二区三区免费视| 国产日韩欧美电影在线观看| 久久精品影视伊人网| 国产精品久久久久久av下载红粉| 国产一区二区三区日韩欧美| 亚洲第一网中文字幕| 国产专区欧美专区| 国产主播喷水一区二区| 欧美国产日韩免费| 精品亚洲夜色av98在线观看| 最近2019中文字幕第三页视频| 欧美黑人巨大精品一区二区| 欧美—级a级欧美特级ar全黄| 奇米影视亚洲狠狠色| 亚洲美女www午夜| 成人黄色短视频在线观看| 日韩高清不卡av| 福利一区福利二区微拍刺激| 国产精品一区二区av影院萌芽| 欧美乱人伦中文字幕在线| 国产视频精品自拍| 97超碰色婷婷| 欧美日在线观看| 欧美整片在线观看| 一区二区三区视频免费在线观看| 久久人人爽人人爽人人片av高清| 亚洲国产高清高潮精品美女| 高清欧美性猛交xxxx黑人猛交| 奇门遁甲1982国语版免费观看高清| 久久久亚洲国产天美传媒修理工| 日韩成人在线视频| 国产有码在线一区二区视频| 亚洲国产欧美自拍| 日韩精品在线播放| 38少妇精品导航| 国产成人综合av| 久久久精品2019中文字幕神马| 中文字幕亚洲色图| 欧美精品激情在线观看| 97视频在线观看网址| 国产视频精品在线| 欧美激情一级二级| 亚洲毛片一区二区| 精品女厕一区二区三区| 国产在线精品播放| 亚洲在线观看视频| 久久久久久久久久久网站| 亚洲男人天堂网| 国产福利精品在线| 亚洲在线观看视频网站| 日本精品一区二区三区在线播放视频| 午夜精品在线视频| 欧美激情videos| 日本韩国在线不卡| 欧美精品在线播放| 久久久91精品| 97超碰色婷婷| www欧美xxxx| 欧美美女15p| 久久九九全国免费精品观看| 欧美日韩在线看| 欧美黄网免费在线观看| 国产精品免费一区二区三区都可以| 色偷偷偷亚洲综合网另类| 欧美人与性动交| 成人欧美一区二区三区在线湿哒哒| 亚洲精品白浆高清久久久久久| 国产精品极品美女在线观看免费| 日韩中文字幕在线| 国产欧美日韩精品专区| 精品美女永久免费视频| 中文字幕在线视频日韩| 欧美视频在线观看 亚洲欧| 91地址最新发布| 久久精品99无色码中文字幕|