亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Junit 的使用經驗總結
作者:網絡轉載 發布時間:[ 2013/1/5 14:23:08 ] 推薦標簽:

經驗一、不要在測試用例的構造函數中做初始化
當我們需要增加一個測試時,我們要書寫一個自己的測試用例,比如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 中定義的父類的環境被初
始化了。當然這也有例外,是基類可以處理任意的測試數據。

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 九草在线免费观看 | 久久成人性色生活片 | 无遮挡黄动漫在线观看播放 | 中文字幕丝袜美腿 | 午夜视频在线播放 | 精品一区二区三区在线视频 | 亚洲视频第一页 | 欧美a在线视频 | 免费看h成年漫画在线观看 免费看a级 | 丁香六月狠狠激情综合基地 | 亚洲日本一区二区 | 麻豆入口 | 男女晚上黄羞羞视频播放 | 国产一级视频 | 么公又大又硬又粗又爽小说 | 黄色私人影院 | 国产欧美日韩精品一区二 | 一个人看的www免费视频中文 | 成年女人毛片免费观看不卡 | 日本宅男午夜免费永久网站 | 成人性色生活片免费看成人性 | 乱乳荡小说 | 亚洲国产成人成上人色 | 一级毛片免费不卡夜夜欢 | 午夜性色吃奶添下面69影院 | 一个人的www免费视频 | 国产最强大片免费视频 | 最近的2019中文字幕4 | 国产成人女人在线视频观看 | 日本韩国在线观看 | 亚洲第一页中文字幕 | 成人欧美日本免费观看 | 亚洲色图综合图区 | 日韩一级片在线播放 | 国产一区二区三区不卡观 | 最近中文字幕视频国语中文字幕 | 污网站在线观看免费 | 亚洲欧美另类综合 | 亚洲天天做日日做天天看2018 | 精品亚洲性xxx久久久 | 国产精品成人观看视频国产 |