posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          測試 servlet(轉)

          Posted on 2007-10-31 11:11 G_G 閱讀(1093) 評論(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();
          ??}
          ?}
          }


          評論

          # re: 測試 servlet(轉)  回復  更多評論   

          2007-11-15 21:46 by 劉寶華
          請問一下,如何測試有輸入參數的servlet?
          如下。
          DataInputStream dis = new DataInputStream(HttpServletRequest.getInputStream());
          dis.readUTF();
          測試代碼該如何寫?

          # re: 測試 servlet(轉)  回復  更多評論   

          2007-11-16 15:37 by G_G
          http://www.aygfsteel.com/Good-Game/archive/2007/11/02/157726.html

          你看看這 個blog 這有對 setAttribute 的方法
          主站蜘蛛池模板: 浦东新区| 普宁市| 通城县| 定陶县| 西乡县| 凉城县| 万荣县| 阿克| 临桂县| 扎鲁特旗| 仁化县| 芦溪县| 抚州市| 洮南市| 富平县| 荣昌县| 庆城县| 江津市| 新河县| 五家渠市| 茌平县| 宁安市| 西充县| 阿城市| 德化县| 吴旗县| 庆安县| 自治县| 江源县| 老河口市| 六枝特区| 垦利县| 息烽县| 鸡西市| 太康县| 嘉兴市| 大丰市| 闽清县| 高平市| 乌审旗| 江源县|