通过项目实例跟我学Web网站测试技术——Cactus技术的应用实例(第2部分)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1通过项目实例跟我学Web网站测试技术——Cactus技术的应用实例(第2部分)
1.1.1利用JBuilder来完成前面的Web应用的实例----创建被测试的站点
1、创建出Project和Web Applicaton组件
添加一个Web组件WebCactusApp
(2)在该Web组件中添加一个index.jsp
<%@ page contentType="text/html; charset=GBK" %>
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=BIG5">
<TITLE>首頁</TITLE></HEAD><BODY>
<form action="/WebCactusApp/loginservlet" method="post" >
用户名称: <input type="text" name="userName"><br>
用户密码: <input type="password" name="userPassword"><br> <input type="submit" value="登录">
</form>
</BODY></HTML>
(3)LoginServlet.java
注意URL-Pattern: /loginservlet
编程该Servlet,代码如下:
package webcactus;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
if (validUser(request)){
String userName = request.getParameter("userName");
request.setAttribute("userName", userName);
// Test为JSP页面文件所在的Web应用程序中的目录名称,而表示Web应用的名称
RequestDispatcher rd = request.getRequestDispatcher("/test/loginResult.jsp");
rd.forward(request, response);
}
else{
//do something
}
}
public boolean validUser(HttpServletRequest request) //该方法模拟业务组件类的方法
{
String userName = request.getParameter("userName");
String userPassword = request.getParameter("userPassword");
boolean okOrNot= userName.equals("yang") && userPassword.equals("1234");
if (okOrNot){
//实际可以访问数据库表来进行验证
return true;
}
else{
return false;
}
}
}
在我们的站点的web.xml中部署前面的Servlet
<servlet>
<servlet-name>loginservlet</servlet-name>
<servlet-class>webmisservlet.servlettestcase.LoginServlet</servlet-class> </servlet>
<servlet-mapping>
<servlet-name>loginservlet</servlet-name>
<url-pattern>/loginservlet</url-pattern>
</servlet-mapping>
(4)loginResult.jsp 结果页面
<%@ page contentType="text/html; charset=GBK" %>
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=BIG5"> <TITLE>欢迎您登录本网站</TITLE></HEAD><BODY>
Hello, <%= request.getAttribute("userName") %>!
</BODY></HTML>
(6)启动Tomcat服务器,然后浏览我们的用户登录页面
点击“登录”以进行提交,将产生下面的结果
1.1.2对前面的Web站点中的Servlet进行单元测试
1、利用JBuilder中的Cactus Setup来添加对Cactus的引用和配置(1)启动Cactus Setup
而在JB2005/JB2006中则为下面的状态
分别点击其中的New按钮以创建出Server和Test的配置,采用缺省的配置名称
JBuilder将为该Web应用产生出对Cactus的配置项目
注意:
JBuilder中所产生的cactus.properties文件中的内容有错误cactus.filterRedirectorName=/FilterRedirector应该为
cactus.filterRedirectorName=FilterRedirector 同时在web.xml中也自动地添加各个代理的组件的部署。
3、添加TestLoginServlet类(测试用例类)
选择测试的类LoginServlet和其中的validUser()方法
类名称为TestLoginServlet,包名称为testwebcactus,基类为org.apache.cactus.ServletTestCase
将产生出一个空的模板程序
(3)编程测试用例的程序代码package testwebcactus; import org.apache.cactus.*; import webcactus.*;
import javax.servlet.http.*; import junit.framework.*;
public class TestLoginServlet extends ServletTestCase {
private LoginServlet loginServlet = null;
public TestLoginServlet(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
loginServlet = new LoginServlet();
}
protected void tearDown() throws Exception {
loginServlet = null;
super.tearDown();
}
public void beginValidUser(WebRequest webreq){
webreq.addParameter("userName", "yang");
webreq.addParameter("userPassword", "1234");
}
public void testValidUser()
{
boolean actualReturn=loginServlet.validUser(request); assertTrue(actualReturn);
}
public static Test suite()
{
TestSuite suite = new TestSuite ();
suite.addTestSuite(TestLoginServlet.class);
return suite;
}
public static void main(String[] theArgs)
{
/*
如果采用Swing或者AWT的测试运行器则出现错误
junit.swingui.TestRunner.main(new String[]{ TestLoginServlet.class.getName()});
*/
junit.textui.TestRunner.main(new
String[]{ TestLoginServlet.class.getName()});
}
}
6、执行本项目
(1)启动Tomcat服务器容器(由于Cactus是容器内的技术)
(2)再执行我们的测试用例
将显示出测试成功的提示
模拟错误的状态----在beginValidUser方法提供错误的参数
为了理解Cactus的功能,我们可以将index.jsp删除掉
然后再启动服务器
再执行我们前面的TestCase。