淺析對JSF項目的單元測試
不知道大家有沒有對Web頁面進(jìn)行測試的經(jīng)歷?或者正想要對web頁面進(jìn)行測試?為什么我下面這篇文章沒什么人回復(fù)呢?是因為JSF用到的人少,還是因為我比較超前沒幾個人想到對JSF頁面進(jìn)行自動測試呢?呵呵
一直以來,我們使用java語言開發(fā)的程序主要是web應(yīng)用程序而非桌面應(yīng)用,當(dāng)然java是完全可以用來開發(fā)桌面應(yīng)用程序的,目前已經(jīng)有了比較成熟的針對java的單元測試工具Junit,但是Junit在web應(yīng)用開發(fā)過程中卻很難派上大的用場,比如如何讓程序?qū)SP頁面進(jìn)行自動測試?
我們在太原鐵路項目中普遍采用了JSF框架進(jìn)行前端頁面的展現(xiàn)和服務(wù)器端業(yè)務(wù)邏輯的處理,收到了比較好的效果,提高了工作效率,但是我們在程序開發(fā)過程中經(jīng)常重復(fù)出現(xiàn)一些解決過的錯誤,為了解決這些錯誤又需要重新尋找出現(xiàn)錯誤的地方,或者因為改動了一個小的地方而導(dǎo)致其他地方出現(xiàn)問題我們卻一無所知。
最后我們只能通過一遍遍的點(diǎn)擊頁面重復(fù)測試才能重新樹立對程序的信心,然而人是有厭倦心理的,對于一遍遍重復(fù)的低級勞動很快就會厭倦,尤其是程序員對自己所寫的代碼很厭倦測試,這樣很難保證程序的質(zhì)量。
于是我們想過引入單元測試,重復(fù)的東西讓計算機(jī)去做,然而對JSF頁面進(jìn)行單元測試是比較困難的,因為JSF 程序都是運(yùn)行在容器環(huán)境中的,與HTTP請求和相應(yīng)是緊密關(guān)聯(lián),如果我們要對ManagedBean進(jìn)行測試,需要構(gòu)造上下文環(huán)境,這些上下文環(huán)境原本是由瀏覽器和JBoss之類的容器構(gòu)造的,讓我們自己去編寫代碼構(gòu)造上下文環(huán)境很難也很不現(xiàn)實,對JSF頁面的自動測試也是很難想象的,然而有了 JSFUnit的參與這一切將變得很簡單,JSFUnit就是我下面要介紹的針對JSF的測試工具。
JSFUnit是jboss開源組織的一個開源項目,JSFUnit beta 1版于2007年11月發(fā)布,目前國內(nèi)使用JSFUnit還比較少,相信日后一定會得到廣泛的使用。JSFUnit被設(shè)計為通過使用簡單的API來完成 JSF項目的集成測試和單元測試的工具。它完全可以訪問managed beans, FacesContext, EL表達(dá)式和JSF內(nèi)部組件樹,同時可以訪問每次客戶端請求后的HTML相應(yīng)。
當(dāng)然JSFUnit還有其他一些功能,比如JSF靜態(tài)分析測試可以測試JSF的配置文件faces-config.xml,幫你盡早發(fā)現(xiàn)配置問題。 JSFTimer能夠進(jìn)行JSF生命周期每個階段的性能測試。從此JSF的測試從難以想象到輕松變?yōu)楝F(xiàn)實。目前還只有JSFUnit的官方網(wǎng)站對它的使用方法進(jìn)行了比較詳細(xì)的介紹,如有興趣可以登陸www.jsfunit.org或者h(yuǎn)ttp://www.jboss.com/jsfunit/進(jìn)行查詢。下面我將介紹一下我在使用JSFUnit中的一些經(jīng)驗,希望需要使用它的人能夠少走彎路。
【編輯推薦】