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

          不使用容器 進行 測試 jsp

          Posted on 2007-11-02 17:11 G_G 閱讀(1235) 評論(0)  編輯  收藏 所屬分類: JUnit
          參照:容器外的JSP頁面測試技術
          由于上面給出例 復雜 。一般人很難理解。我也是 ^_^
          但仔細看我還是自己寫出一個比較簡單的,望大家一起討論。

          被測試jsp
          <%@?taglib?prefix="html"?uri="/WEB-INF/struts-html.tld"?%>
          <%@?taglib?prefix="c"?uri="/WEB-INF/c-1_0-rt.tld"?%>
          <html:html>
          ????
          <c:if?test="${name?!=?pass}">
          ???????${name}??
          <br>
          ???????${pass}?
          <br>
          ??? ?? <!-- <html:text property="in" ></html:text> -->
          ????</c:if>
          </html:html>





          ant直接把他放在 eclipes 工程的根目錄下 build.xml
          ???
          但有有3個參數要設置 tomcat.home? Tomcat 的地址
          ??? ??? ??? ??? ??? ??? webapp.path 工程中的根目錄,下面有WEB-INF
          ??? ??? ??? ??? ??? ??? src 原代碼 (到時候jsp會翻譯成.java
          ??? ??? ??? ??? ??? ??? ??? ??? ??? 到這個目錄的 org.apache.jsp.jsp 下)
          <project?name="Webapp?Precompilation"?default="all"?basedir=".">?

          ??
          <!--?tomcat?dir?-->
          ??
          <property?name="tomcat.home"?value="D:\Tomcat?5.0"/>
          ??
          ??
          <!--?this=..//WEB-INF?(in?eclipes)??-->
          ??
          <property?name="webapp.path"?value=".\WebRoot"/>
          ??
          <!--?src?(in?eclipes)?-->
          ??
          <property?name="src"?value="./src"/>

          ??
          <target?name="jspc">?
          ????
          <taskdef?classname="org.apache.jasper.JspC"?name="jasper2"?>?
          ??????
          <classpath?id="jspc.classpath">?
          ????????
          <pathelement?location="${java.home}/../lib/tools.jar"/>?
          ????????
          <fileset?dir="${tomcat.home}/bin">?
          ??????????
          <include?name="*.jar"/>?
          ????????
          </fileset>?
          ????????
          <fileset?dir="${tomcat.home}/server/lib">?
          ??????????
          <include?name="*.jar"/>?
          ????????
          </fileset>?
          ????????
          <fileset?dir="${tomcat.home}/common/lib">?
          ??????????
          <include?name="*.jar"/>?
          ????????
          </fileset>?
          ??????
          </classpath>?
          ????
          </taskdef>?

          ????
          <jasper2?
          ?????????????
          validateXml="false"?
          ?????????????uriroot
          ="${webapp.path}"?
          ?????????????webXmlFragment
          ="${webapp.path}/WEB-INF/generated_web.xml"?
          ?????????????outputDir
          ="${src}"?/>?
          ??
          </target>

          ??
          <target?name="compile">

          ????
          <mkdir?dir="${webapp.path}/WEB-INF/classes"/>
          ????
          <mkdir?dir="${webapp.path}/WEB-INF/lib"/>

          ????
          <javac?destdir="${webapp.path}/WEB-INF/classes"
          ???????????optimize
          ="off"
          ???????????debug
          ="on"?failonerror="false"
          ???????????srcdir
          ="${src}"?
          ???????excludes
          ="**/*.smap">
          ??????
          <classpath>
          ????????
          <pathelement?location="${webapp.path}/WEB-INF/classes"/>
          ????????
          <fileset?dir="${webapp.path}/WEB-INF/lib">
          ??????????
          <include?name="*.jar"/>
          ????????
          </fileset>
          ????????
          <pathelement?location="${tomcat.home}/common/classes"/>
          ????????
          <fileset?dir="${tomcat.home}/common/lib">
          ??????????
          <include?name="*.jar"/>
          ????????
          </fileset>
          ????????
          <pathelement?location="${tomcat.home}/shared/classes"/>
          ????????
          <fileset?dir="${tomcat.home}/shared/lib">
          ??????????
          <include?name="*.jar"/>
          ????????
          </fileset>
          ????????
          <fileset?dir="${tomcat.home}/bin">?
          ??????????
          <include?name="*.jar"/>?
          ????????
          </fileset>?
          ??????
          </classpath>
          ??????
          <include?name="**"?/>
          ??????
          <exclude?name="tags/**"?/>
          ????
          </javac>

          ??
          </target>

          ??
          <target?name="all"?depends="jspc,compile">
          ??
          </target>

          ??
          <target?name="cleanup">
          ??????
          <delete>
          ????????
          <fileset?dir="${webapp.path}/WEB-INF/src"/>
          ????????
          <fileset?dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/>
          ??????
          </delete>
          ??
          </target>

          </project>

          TEST
          package?jetty.test.supper;


          import?javax.servlet.http.HttpServletRequest;
          import?javax.servlet.http.HttpServletResponse;

          import?org.apache.jsp.jsp.MyJsp_jsp;

          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.TestCase;

          public?class?JSPCTest?extends?TestCase{
          ????
          private?InvocationContext?ic?=?null?;

          ????
          protected?void?setUp()?throws?Exception?{
          ????????ServletRunner?sr?
          =?new?ServletRunner();
          ???????????
          //?向環境中注冊 jsp
          ????????sr.registerServlet("HelloWorld",?MyJsp_jsp.class.getName());
          ????????ServletUnitClient??sc?
          =?sr.newClient();
          ????????WebRequest?request?
          =?new?GetMethodWebRequest("http://localhost/HelloWorld");
          ?????????ic?
          =?sc.newInvocation(request);

          ????}
          ????
          ????
          public?void?testJspC()?throws?Exception{
          ????????HttpServletRequest?re?
          =??ic?.getRequest();
          ????????HttpServletResponse?rq?
          =??ic.getResponse();
          ????????re.setAttribute(
          "name","liukaiyi");
          ????????re.setAttribute(
          "pass","123456");
          ????????
          ????????MyJsp_jsp?is?
          =?(MyJsp_jsp)?ic.getServlet();
          ????????is._jspService(re,rq);
          ????????
          ????????WebResponse?response?
          =?ic.getServletResponse();
          // 輸出
          ????????System.out.println(?response.getText()?);
          ????????
          ????}
          }

          結果是
          <html>
          ????
          ???????liukaiyi??
          <br>
          ???????123456?
          <br>
          ????
          ????
          </html>

          后面用 HttpUnit 和 HtmlUnit 測試就不用我說了把 網上一大把。




          主站蜘蛛池模板: 郓城县| 行唐县| 上蔡县| 长泰县| 武邑县| 光泽县| 丰城市| 西平县| 陆丰市| 白银市| 鲜城| 秦安县| 乌兰浩特市| 福泉市| 中阳县| 达孜县| 丰顺县| 九江市| 景谷| 东兴市| 通河县| 玉溪市| 辽宁省| 开江县| 嘉兴市| 隆安县| 哈巴河县| 宿迁市| 荣昌县| 皮山县| 凌海市| 湖口县| 新邵县| 华蓥市| 乐都县| 大竹县| 江津市| 金门县| 哈巴河县| 温宿县| 腾冲县|