posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          測(cè)試 servlet(轉(zhuǎn))

          Posted on 2007-10-31 11:11 G_G 閱讀(1092) 評(píng)論(2)  編輯  收藏 所屬分類: JUnit
          1. HttpUnit
          1>servlet可以脫離容器,容易把該測(cè)試寫入ant或maven腳本,讓測(cè)試進(jìn)行。
          2>httpunit在測(cè)試servlet行為時(shí),采用的是完全模擬瀏覽器,有時(shí)測(cè)試比較難寫。

          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?{

          ???
          //?創(chuàng)建Servlet的運(yùn)行環(huán)境
          ???ServletRunner?sr?
          =?new?ServletRunner();
          ???
          //?向環(huán)境中注冊(cè)Servlet
          ???sr.registerServlet("HelloWorld",?HelloWorld.class.getName());
          ?
          ???
          //?創(chuàng)建訪問(wèn)Servlet的客戶端
          ???ServletUnitClient?sc?
          =?sr.newClient();

          ???
          //?發(fā)送請(qǐng)求
          ???WebRequest?request?
          =?new?GetMethodWebRequest("http://localhost/HelloWorld");
          ???request.setParameter(
          "username",?"testuser");
          ???
          ???
          //用委托加載?is
          ???InvocationContext?ic?=?sc.newInvocation(request);
          ???HelloWorld?is?
          =?(HelloWorld)?ic.getServlet();
          ?
          ???
          //?測(cè)試servlet的某個(gè)方法
          ???Assert.assertTrue(is.authenticate());

          ???
          //?獲得模擬服務(wù)器的信息
          ???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?{
          ??????
          //通過(guò)代碼設(shè)置并啟動(dòng)一個(gè)服務(wù)器,該服務(wù)器是servlet的測(cè)試容器
          ??????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();
          ??}
          ?}
          }


          評(píng)論

          # re: 測(cè)試 servlet(轉(zhuǎn))  回復(fù)  更多評(píng)論   

          2007-11-15 21:46 by 劉寶華
          請(qǐng)問(wèn)一下,如何測(cè)試有輸入?yún)?shù)的servlet?
          如下。
          DataInputStream dis = new DataInputStream(HttpServletRequest.getInputStream());
          dis.readUTF();
          測(cè)試代碼該如何寫?

          # re: 測(cè)試 servlet(轉(zhuǎn))  回復(fù)  更多評(píng)論   

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

          你看看這 個(gè)blog 這有對(duì) setAttribute 的方法
          主站蜘蛛池模板: 铜陵市| 施甸县| 高台县| 张北县| 炉霍县| 镇沅| 南靖县| 兰州市| 延边| 波密县| 逊克县| 门头沟区| 怀仁县| 尉犁县| 泸溪县| 繁昌县| 宁夏| 满城县| 昭觉县| 盘山县| 襄樊市| 唐山市| 茌平县| 延庆县| 莱州市| 托克逊县| 泸溪县| 盈江县| 东丽区| 龙井市| 济南市| 武宣县| 合山市| 泸州市| 遂宁市| 诏安县| 广灵县| 咸阳市| 博罗县| 泗阳县| 石河子市|