5、如何使用httpunit進(jìn)行測(cè)試
5.1 對(duì)頁(yè)面內(nèi)容進(jìn)行測(cè)試
httpunit中的這部分測(cè)試完全采用了JUnit的測(cè)試方法,即直接將你期望的結(jié)果和頁(yè)面中的輸出內(nèi)容進(jìn)行比較。
比如你期望中的頁(yè)面顯示是中有一個(gè)表格,它是頁(yè)面中的第一個(gè)表格,而且他的第一行第一列的數(shù)據(jù)應(yīng)該是顯示username,那么你可以使用下面的代碼進(jìn)行自動(dòng)化測(cè)試:
// 建立一個(gè)WebConversation實(shí)例
WebConversation wc = new WebConversation();
// 獲取響應(yīng)對(duì)象
WebResponse resp = wc.getResponse( "http://www.sqalab.com/article/html/article_59.html" );
// 獲得對(duì)應(yīng)的表格對(duì)象
WebTable webTable = resp.getTables()[0];
// 將表格對(duì)象的內(nèi)容傳遞給字符串?dāng)?shù)組
String[][] datas = webTable.asText();
// 對(duì)表格內(nèi)容進(jìn)行測(cè)試
String expect = "中文";
// 增加 assertEquals 判斷
Assert.assertEquals(expect,datas[0][0]);
5.2 對(duì)Servlet進(jìn)行測(cè)試
除了對(duì)頁(yè)面內(nèi)容進(jìn)行測(cè)試外,有時(shí)候(比如開發(fā)復(fù)雜的Servlets的時(shí)候),你需要對(duì) Servlet本身的代碼塊進(jìn)行測(cè)試,這時(shí)候你可以選擇HttpUnit,它可以提供一個(gè)模擬的Servlet容器,讓你的Servlet代碼不需要發(fā)布到Servlet容器(如tomcat)可以直接測(cè)試。
5.2.1 原理簡(jiǎn)介
使用httpunit測(cè)試Servlet時(shí),請(qǐng)創(chuàng)建一個(gè)ServletRunner的實(shí)例,他負(fù)責(zé)模擬Servlet容器環(huán)境。如果你只是測(cè)試一個(gè)Servlet,你可以直接使用registerServlet方法注冊(cè)這個(gè)Servlet,如果需要配置多個(gè)Servlet,你可以編寫自己的web.xml,然后在初始化ServletRunner的時(shí)候?qū)⑺奈恢米鳛閰?shù)傳給 ServletRunner的構(gòu)造器。
在測(cè)試Servlet時(shí),應(yīng)該記得使用ServletUnitClient類作為客戶端,他和前面用過的WebConversation差不多,都繼承自WebClient,所以他們的調(diào)用方式基本一致。要注意的差別是,在使用 ServletUnitClient時(shí),他會(huì)忽略URL中的主機(jī)地址信息,而是直接指向他的ServletRunner實(shí)現(xiàn)的模擬環(huán)境。