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

          測試 servlet(轉(zhuǎn))

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

          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)建訪問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();
          ?
          ???
          //?測試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?{
          ??????
          //通過代碼設(shè)置并啟動(dòng)一個(gè)服務(wù)器,該服務(wù)器是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();
          ??}
          ?}
          }


          評(píng)論

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

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

          # re: 測試 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 的方法
          主站蜘蛛池模板: 星座| 二连浩特市| 筠连县| 黄陵县| 柳林县| 临高县| 墨竹工卡县| 晋江市| 炎陵县| 利辛县| 鄂伦春自治旗| 汕尾市| 旬邑县| 三明市| 杭锦后旗| 平遥县| 汉中市| 赣州市| 新营市| 丽水市| 治多县| 金堂县| 阿克| 邓州市| 班玛县| 大石桥市| 凌云县| 深州市| 余姚市| 鄯善县| 民和| 安新县| 偃师市| 那曲县| 库车县| 达孜县| 焦作市| 如皋市| 合肥市| 大兴区| 黄大仙区|