Posted on 2007-11-02 17:11
G_G 閱讀(1233)
評論(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 測試就不用我說了把 網上一大把。