Posted on 2007-10-31 11:11
G_G 閱讀(1088)
評論(2) 編輯 收藏 所屬分類:
JUnit
1. HttpUnit
1>servlet可以脫離容器,容易把該測試寫入ant或maven腳本,讓測試進行。
2>httpunit在測試servlet行為時,采用的是完全模擬瀏覽器,有時測試比較難寫。
package?Cactus.test.support;
import?junit.framework.TestCase;
import?Cactus.HelloWorld;
import?com.meterware.httpunit.GetMethodWebRequest;
import?com.meterware.httpunit.WebRequest;
import?com.meterware.httpunit.WebResponse;
import?com.meterware.servletunit.InvocationContext;
import?com.meterware.servletunit.ServletRunner;
import?com.meterware.servletunit.ServletUnitClient;
import?junit.framework.Assert;
?
public?class?HttpUnitTestHelloWorld?extends?TestCase?{
?
?protected?void?setUp()?throws?Exception?{
??super.setUp();
?}
?
?protected?void?tearDown()?throws?Exception?{
??super.tearDown();
?}
?
?public?void?testHelloWorld()?{
??
??try?{
???//?創建Servlet的運行環境
???ServletRunner?sr?=?new?ServletRunner();
???//?向環境中注冊Servlet
???sr.registerServlet("HelloWorld",?HelloWorld.class.getName());
?
???//?創建訪問Servlet的客戶端
???ServletUnitClient?sc?=?sr.newClient();
???//?發送請求
???WebRequest?request?=?new?GetMethodWebRequest("http://localhost/HelloWorld");
???request.setParameter("username",?"testuser");
???
???//用委托加載?is
???InvocationContext?ic?=?sc.newInvocation(request);
???HelloWorld?is?=?(HelloWorld)?ic.getServlet();
?
???//?測試servlet的某個方法
???Assert.assertTrue(is.authenticate());
???//?獲得模擬服務器的信息
???WebResponse?response?=?sc.getResponse(request);
???//?斷言
???Assert.assertTrue(response.getText().equals("testuser:Hello?World!"));
??}?catch?(Exception?e)?{
???e.printStackTrace();
??}
?}
?
}
Jetty
package?Cactus.test.support;
import?org.mortbay.jetty.Connector;
import?org.mortbay.jetty.Server;
import?org.mortbay.jetty.bio.SocketConnector;
import?org.mortbay.jetty.servlet.ServletHandler;
?
import?com.meterware.httpunit.WebConversation;
import?com.meterware.httpunit.WebResponse;
?
import?junit.framework.Assert;
import?junit.framework.TestCase;
?
public?class?JettySampleTest?extends?TestCase?{
?
?Server?server;
?protected?void?setUp()?throws?Exception?{
??????//通過代碼設置并啟動一個服務器,該服務器是servlet的測試容器
??????super.setUp();
??????server?=?new?Server();
??????Connector?connector=new?SocketConnector();
??????connector.setPort(80);
??????server.setConnectors(new?Connector[]{connector});
??????ServletHandler?handler=new?ServletHandler();
??????server.setHandler(handler);
??????handler.addServletWithMapping("Cactus.HelloWorld",?"/");
??????server.start();
?}
?
?protected?void?tearDown()?throws?Exception?{
??super.tearDown();
??server.stop();
?}
?
?public?void?testHellWorld()?{
??try?{
???WebConversation?wc?=?new?WebConversation();
???WebResponse?web?=?wc.getResponse("http://127.0.0.1/HelloWorld");
???String?result=web.getText();
???Assert.assertEquals(result,"null:Hello?World!");
??
??}?catch?(Exception?e)?{
???e.printStackTrace();
??}
?}
}