決策表
成都創(chuàng)新互聯(lián)公司是專業(yè)的新和網(wǎng)站建設(shè)公司,新和接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新和網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
Fitnesse中提供了好幾種表格樣式,前面說(shuō)了,表格是執(zhí)行測(cè)試的關(guān)鍵。從字面看,表格描述的是測(cè)試用例;從執(zhí)行角度看,表格為后端的代碼(fitnesse里稱作fixture)提供了包名、類名、方法名和參數(shù)(僅以java為例)。
先說(shuō)測(cè)試系統(tǒng),fitnesse提供了兩種測(cè)試系統(tǒng):fit和slim。采用不同的測(cè)試系統(tǒng),表格樣式不同,代碼也不同。所以首先就要確定用哪種。fit是默認(rèn)的,是從Framework for Integrated Test工具延續(xù)過(guò)來(lái)的。如果不考慮舊代碼延用的問(wèn)題,建議還是用slim。因?yàn)閟lim在性能上要更好,而且代碼編寫(xiě)更簡(jiǎn)單。
使用slim需要在頁(yè)面加一行說(shuō)明:!define TEST_SYSTEM {slim} ,通常放在頁(yè)頂端
下面就該描述執(zhí)行代碼所依賴的類或jar包了。格式一般這樣寫(xiě):
!pathD:\software\eclipse\workspaces\MyDemo\bin\ 或
!pathD:\software\eclipse\workspaces\MyDemo\libs\*.jar(如果不指定.jar,那就去找.class文件)
在去年的版本里還需要把fitnesse自身的jar包加上:!pathD:\software\fitnesse-standalone.jar ,但是今年的版本里,我發(fā)現(xiàn)已經(jīng)不需要這句了。
決策表這個(gè)樣式的:
my demo | ||
inputa | inputb | exp? |
1 | 2 | 3 |
8 | 9 | 17 |
這個(gè)my demo就是代碼的類名了,大家知道在大多數(shù)編程語(yǔ)言里是不允許含有空格的標(biāo)識(shí)符的。那么在代碼里用my demo肯定是不行的。Fitnesse其實(shí)是這樣做的——把每個(gè)單詞首字母大寫(xiě),然后連起來(lái)。所以對(duì)應(yīng)于代碼里的類名是MyDemo,這樣一來(lái),其實(shí)這里寫(xiě)成My Demo、My demo、MyDemo效果都是一樣的。但寫(xiě)成mydemo就不行了,這只能被轉(zhuǎn)換成Mydemo,我想我說(shuō)明白了吧。對(duì)于類的全名(含包名),那就只能老老實(shí)實(shí)按正常寫(xiě)法了,比如:com.calis.zjc.MyDemo,不能有空格,否則再自動(dòng)轉(zhuǎn)成首字母大寫(xiě)就不對(duì)了。
下一行就是方法名了。Fitnesse是這樣做的——凡不是以?結(jié)尾的,都認(rèn)為是輸入方法,無(wú)返回值,方法名是set+首字母大寫(xiě)字符串,也就是說(shuō),上面表格對(duì)應(yīng)的方法名分別是:void setInputa(...) 、void setInputb(...);而以?結(jié)尾的列,則認(rèn)為是驗(yàn)證方法,無(wú)參數(shù)有返回值。對(duì)應(yīng)方法名是int exp()。何以見(jiàn)得返回值類型就是int呢,其實(shí)是不限定的。不論返回什么類型都可以和頁(yè)面上的字符做比較,這點(diǎn)比較智能(我沒(méi)有看到源代碼,但我估計(jì)是拿到返回值再統(tǒng)統(tǒng).toString(),之后和頁(yè)面上的字符串做equals的)
綜上所述:上面表格對(duì)應(yīng)的代碼為:
public class MyDemo { private int a,b; public void setInputa(int a){ this.a=a; } public void setInputb(int b){ this.b=b; } public int exp(){ return a+b; } }
當(dāng)我們把此頁(yè)面屬性設(shè)置為test時(shí),點(diǎn)擊那個(gè)test按鈕,系統(tǒng)就會(huì)去查找并加載這個(gè)類,然后運(yùn)行相應(yīng)的方法,也即:第一步setInputa(int a),a為1;第二步setInputb(int b),b為2;第三步exp取得返回值3和表格中的3做比較,一致,這行就是綠色的,不一致就是紅色的;然后再做第二行......,這樣就完成了兩個(gè)測(cè)試用例的執(zhí)行。(如果表格里填的不是整數(shù),那么執(zhí)行賦值方法會(huì)拋異常,這點(diǎn)也要注意)
再說(shuō)一句,執(zhí)行頁(yè)面并非只能寫(xiě)表格。完全可以寫(xiě)其他文字,不影響執(zhí)行結(jié)果。所以我們完全可以寫(xiě)一段需求說(shuō)明,跟著一個(gè)表格做驗(yàn)證;再寫(xiě)一段使用說(shuō)明,再跟寫(xiě)一個(gè)表格;描述一個(gè)缺陷,再跟一個(gè)表格......這樣,這個(gè)頁(yè)面就成了既是文檔,又是可執(zhí)行用例了??傊尅拔淖帧钡靡则?yàn)證,是這個(gè)工具的亮點(diǎn)。