使用Cactus进行容器内测试二---(使用junit方式运行测试用例)

在一的基础上编写FirstServletTest2.java,其源代码如下:

package org.pioneer.test.servlet;

import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import org.apache.cactus.WebResponse;
import org.apache.cactus.internal.configuration.BaseConfiguration;

public class FirstServletTest2 extends ServletTestCase {

	public void begin(WebRequest request) {
		System.out.println("begin");
		System.setProperty(BaseConfiguration.CACTUS_CONTEXT_URL_PROPERTY,
				"http://localhost:8080/webtest");
	}

	public void beginIsLogin(WebRequest request) {
		System.out.println("beginIsLogin");
	}

	protected void setUp() throws Exception {
		System.out.println("setUp");
	}

	public void testIsLogin() {
		FirstServlet servlet = new FirstServlet();
		boolean result = servlet.isLogin(request);
		assertEquals(false, result);
	}

	public void testIsLogin2() {
		FirstServlet servlet = new FirstServlet();
		boolean result = servlet.isLogin(request);
		assertEquals(false, result);
	}

	protected void tearDown() throws Exception {
		System.out.println("tearDown");
	}

	public void endIsLogin(WebResponse response) {
		System.out.println("endIsLogin");
	}

	public void end(WebResponse response) {
		System.out.println("end");
	}

}

 

启动tomcat服务器后可以通过junit直接运行该测试用例。

 

 

Cactus执行流程:

1、Cactus的执行流程分为两部分:客户端(Client)与服务器端(Server)

2、客户端部分:首先构造出准备向服务器端发送的请求参数。客户端通过begin及beginXXX方法构造好请求参数后,
与服务器端建立一个HTTP连接,然后向服务器端发送请求。

3、服务器端:最重要的类是ServletTestRedirector类,它是一个Servlet,它收到客户端发送来的请求,
然后通过反射生成测试类的实例,接下来调用其setUp,textXXX,tearDown方法,执行完毕后,向客户端发送响应(Response)。

4、客户端:收到响应后,执行endXXX,end方法,完成测试流程。

5、在客户端执行的方法:begin,beginXXX,endXXX,end。

6、在服务器端执行的方法:setUp,testXXX,tearDown。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要设计一个图书管理系统的注册web页面,可以参考以下代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图书管理系统注册</title> </head> <body> <h1>欢迎注册图书管理系统</h1> <form action="register.jsp" method="post"> <label for="username">用户名:</label> <input type="text" id="username" name="username"><br> <label for="password">密码:</label> <input type="password" id="password" name="password"><br> <label for="confirm_password">确认密码:</label> <input type="password" id="confirm_password" name="confirm_password"><br> <label for="email">邮箱:</label> <input type="email" id="email" name="email"><br> <input type="submit" value="注册"> </form> </body> </html> ``` 接下来,我们需要编写register.jsp用户注册程序,并使用junit+cactus进行单元自动化测试。可以参考以下代码: ```jsp <%@ page import="java.sql.*" %> <%@ page import="javax.sql.*" %> <%@ page import="javax.naming.*" %> <%@ page import="javax.servlet.http.*" %> <%@ page import="junit.framework.*" %> <%@ page import="org.apache.cactus.*" %> <% public class RegisterTest extends TestCase { public void testRegister() throws Exception { HttpServletRequest request = new MockHttpServletRequest(); HttpServletResponse response = new MockHttpServletResponse(); Register servlet = new Register(); servlet.doPost(request, response); // 验证注册结果 assertEquals("success", request.getAttribute("result")); } } public class Register extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String confirm_password = request.getParameter("confirm_password"); String email = request.getParameter("email"); if (username == null || password == null || confirm_password == null || email == null) { request.setAttribute("result", "error"); return; } if (!password.equals(confirm_password)) { request.setAttribute("result", "error"); return; } // 连接数据库,执行插入操作 Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/bookstore"); Connection conn = ds.getConnection(); PreparedStatement ps = conn.prepareStatement("INSERT INTO users(username, password, email) VALUES (?, ?, ?)"); ps.setString(1, username); ps.setString(2, password); ps.setString(3, email); int result = ps.executeUpdate(); if (result == 1) { request.setAttribute("result", "success"); } else { request.setAttribute("result", "error"); } } } %> ``` 以上代码中,我们使用了MockHttpServletRequest和MockHttpServletResponse来模拟HttpServletRequest和HttpServletResponse对象,并使用junit.framework.TestCase来编写测试用例。在测试用例中,我们首先创建了HttpServletRequest和HttpServletResponse对象,然后调用Register的doPost方法进行注册,最后使用assertEquals方法来验证注册结果。在Register的doPost方法中,我们首先获取用户提交的参数,并进行检查,然后连接数据库并执行插入操作,最后将结果存储到request中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值