httpUnit介紹及使用示例
內容摘要
HttpUnit是一個整合測試工具,主要關注Web應用的測試,提供的幫助類讓測試者可以通過Java類和伺服器進行互動,並且將伺服器端的響應當作文字或者DOM物件進行處理。HttpUnit還提供了一個模擬Servlet容器,讓你可以不需要釋出Servlet,就可以對Servlet的內部程式碼進行測試。本文中作者將詳細的介紹如何使用HttpUnit提供的類完成整合測試。
1 HttpUnit簡介
HttpUnit是SourceForge下面的一個開源專案,它是基於JUnit的一個測試框架,主要關注於測試Web應用,解決使用JUnit框架無法對遠端Web內容進行測試的弊端。當前的最新版本是1.5.4。為了讓HtpUnit正常執行,你應該安裝JDK1.3.1或者以上版本。
1.1 工作原理
HttpUnit通過模擬瀏覽器的行為,處理頁面框架(frames),cookies,頁面跳轉(redirects)等。通過HttpUnit提供的功能,你可以和伺服器端進行資訊互動,將返回的網頁內容作為普通文字、XML Dom物件或者是作為連結、頁面框架、影象、表單、表格等的集合進行處理,然後使用JUnit框架進行測試,還可以導向一個新的頁面,然後進行新頁面的處理,這個功能使你可以處理一組在一個操作鏈中的頁面。
1.2 和其他商業工具的對比
商業工具一般使用記錄、回放的功能來實現測試,但是這裡有個缺陷,就是當頁面設計被修改以後,這些被記錄的行為就不能重用了,需要重新錄製才能繼續測試。
舉個例子:如果頁面上有個元素最先的設計是採用單選框,這個時候你開始測試,那麼這些工具記錄的就是你的單項選擇動作,但是如果你的設計發生了變化,比如說我改成了下拉選擇,或者使用文字框接受使用者輸入,這時候,你以前錄製的測試過程就無效了,必須要重新錄製。
而HttpUnit因為關注點是這些控制元件的內容,所以不管你的外在表現形式如何變化,都不影響你已確定測試的可重用性。
舉例:
import org.junit.Assert;
import org.junit.Test;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
public class DataSourceResourceTest extends ServletTest {
private static final String REQUST_URL = "http://www.meterware.com/rest/xxx/admin/datasources";
private static final String DATASOURCE = "TestConnection1";
@Test
public void testGetDataSources() {
try {
WebRequest wr = new GetMethodWebRequest(REQUST_URL);
WebResponse response = runner.getResponse(wr);
Assert.assertEquals(SUCCEED_200, response.getResponseCode());
printResponseInfo(response);
} catch (Exception e) {
Assert.fail("Get datasource failed!");
}
}
@Test
public void testCreateEmptyQuery(){
try {
WebRequest wr = new PostMethodWebRequest(REQUST_URL+"/"+QUERY_NAME);
wr.setParameter("connection", "TestConnection1");
wr.setParameter("catalog", "FoodMart");
wr.setParameter("schema", "FoodMart");
wr.setParameter("cube", "Store");
wr.setParameter("xml", "");
WebResponse response = runner.getResponse(wr);
Assert.assertEquals(SUCCEED_200, response.getResponseCode());
printResponseInfo(response);
} catch (Exception e) {
Assert.fail("Create empty query failed!");
}
}
}