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