设计一个图书管理系统的注册web页面,使用junit+cactus进行自己编写的jsp用户注册程序进行单元自动化测试。
时间: 2023-12-10 22:39:53 浏览: 30
首先,我们需要设计一个图书管理系统的注册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中。