Junit是由 Erich Gamma å’?span lang="EN-US"> Kent Beck ¾~–写的一个回归测试框æžÓž¼ˆregression testing frameworkåQ‰ã€?span lang="EN-US">Junit是一套框æžÓž¼Œ¾l§æ‰¿TestCase¾c»ï¼Œž®±å¯ä»¥ç”¨Junit˜q›è¡Œè‡ªåЍ‹¹‹è¯•了ã€?/p>
1 junitç‰ÒŽ€?span lang="EN-US">
  
junit
Junit是一个开放æºä»£ç çš?span lang="EN-US">Java‹¹‹è¯•框架åQŒç”¨äºŽç¼–写和˜q行å¯é‡å¤çš„‹¹‹è¯•。他是用于å•元测试框架体¾p?span lang="EN-US">xUnit的一个实例(用于javaè¯è¨€åQ‰ã€‚它包括以下ç‰ÒŽ€§ï¼š
  â‘?用于‹¹‹è¯•期望¾l“果的æ–a€åQ?span lang="EN-US">AssertionåQ?span lang="EN-US">
  â‘?用于å…׃ín共匋¹‹è¯•æ•°æ®çš„æµ‹è¯•å·¥å…?span lang="EN-US">
  â‘?用于方便的组¾l‡å’Œ˜q行‹¹‹è¯•的测试套ä»?span lang="EN-US">
â‘?囑ÖŞ和文本的‹¹‹è¯•˜q行å™?span lang="EN-US">
å›_‡»è¦ä‹É用的junit的项目,点击properties—java bulid path-librariesåQŒç‚¹å‡?span lang="EN-US">Add External JARs,åŠ ä¸ŠJUNIT包ã€?span lang="EN-US">
3 用法
- 创å¾åQŒä»Žjunit.framework.TestCase‹z„¡”Ÿnuit test需è¦çš„test case.
- 书写‹¹‹è¯•æ–ÒŽ³•
- ¾~–译 书写çŽ?span lang="EN-US">test caseåŽï¼Œ¾~–译所写的test case¾c?span lang="EN-US">
- ˜q行åQŒå¯åŠ?span lang="EN-US">junit test runnner æ¥è¿è¡Œè¿™ä¸?span lang="EN-US">test caseã€?span lang="EN-US">
实例代ç åQ?span lang="EN-US">
package com.dr.test;
import java.util.List;
import junit.framework.TestCase;
import com.dr.dao.StudentDao;
import com.dr.dao.impl.StudentDaoImpl;
import com.dr.vo.Student;
public class StudentDaoImplTest extends TestCase{
StudentDao dao;
protected void setUp() throws Exception{
dao=new StudentDaoImpl();
}
protected void tearDown() throws Exception{
}
public void testAdd(){
Student stu=new Student();
stu.setName("ling");
stu.setAge(1);
stu.setEmail("ling@126.com");
dao.addStudent(stu);
}
public void testListStudent(){
List<Student> list=dao.getStudentList();
System.out.println(list.size());
}
}
Junitä¸çš„两个函数åQ?span lang="EN-US">setUpä¸?span lang="EN-US">tearDown,æ˜?span lang="EN-US">junit framework䏿供åˆå§‹åŒ–金é¢ååˆå§‹åŒ–æ¯ä¸ª‹¹‹è¯•æ–ÒŽ³•çš„ã€?span lang="EN-US">setUp在æ¯ä¸ªæµ‹è¯•方法调用å‰è¢«è°ƒç”¨ï¼Œè´Ÿè´£åˆå§‹åŒ–测试方法所需è¦çš„‹¹‹è¯•环境åQ?span lang="EN-US">teardown在æ¯ä¸ªæµ‹è¯•方法被调用之åŽè¢«è°ƒç”¨ï¼Œè´Ÿè´£æ’¤é”€‹¹‹è¯•环境ã€?span lang="EN-US">
‹¹‹è¯•¾l“æžœåQ?br />
åœ?/span>JUnit的窗å£ä¸æ˜„¡¤ºäº†ä¸€ä¸ªç»¿æ¡ï¼Œ¾l¿æ¡è¯æ˜Ž‹¹‹è¯•æˆåŠŸã€?/span>
˜q‡æ×o器代ç :
package com.dr.course;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.dr.common.Global;
import com.dr.vo.User;
public class IsLoginFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("every request pass here");
HttpServletRequest hrequest=(HttpServletRequest)request;
HttpSession session=hrequest.getSession();
User user = (User)session.getAttribute(Global.USER);
if(user == null){
//è·Œ™{到登陆页é?/span>
hrequest.getRequestDispatcher("/index.jsp").forward(request,response);
}
filterChain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
}
}
LoginServlet¾c»ï¼Œ˜q›è¡Œç™Õd½•之åŽçš„处ç†ï¼š
package com.dr.course;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dr.common.Global;
import com.dr.vo.User;
public class LoginServlet extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
String userName=request.getParameter("username");
String passWord=request.getParameter("password");
System.out.println("userName | " + userName);
System.out.println("passWord | " + passWord);
User user = new User();
user.setUserName(userName);
user.setPassWord(passWord);
HttpSession session = request.getSession();
//ç™Õd½•æˆåŠŸåQŒæŠŠUser攑ֈ°sessionåQŒç„¶åŽåœ¨æ‹¦æˆªå™¨ä¸åˆ¤æ–
//key--value
session.setAttribute(Global.USER, user);
request.getRequestDispatcher("/admin/main.jsp").forward(request, response);
}
}
web.xmlä¸é…¾|®å¦‚下:
- <filter>
<filter-name>isLogin</filter-name>
<filter-class>com.dr.course.IsLoginFilter</filter-class>
</filter>
- <filter-mapping>
<filter-name>isLogin</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
- <servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.dr.course.LoginServlet</servlet-class>
</servlet>
- <servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
未登录界é¢ï¼š
æˆåŠŸç™Õd½•的界é¢ï¼š
我们在登å½?/span>126邮箱æ—Óž¼Œå¦‚æžœå‹ùN€‰ä¸Šä¸¤å‘¨å†…自动登录,两周内ä¸ç”¨è¾“入用户å和密ç é‚®½Ž×ƒ¼šè‡ªåЍç™Õd½•åQŒè¿™æ˜¯å› 为第一‹Æ¡ç™»å½•æ—¶æœåŠ¡å™¨å°†ç”¨æˆ·å和密ç 写入cookieä¸ï¼Œòq¶è¿”回给客户端ã€?/span>
下次ç™Õd½•æ—?/span>Httpå议会带ç€ç”¨æˆ·çš?/span>cookieåŽÀLœåŠ¡å™¨éªŒè¯åQŒå› 为æœåС噍已ç»å˜å‚¨ç”¨æˆ·çš„ä¿¡æ¯ï¼Œæ‰€ä»¥ä¼šè‡ªåЍç™Õd½•ã€?/span>
ç™Õd½•代ç åQ?/span>
package com.dr.course;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
String savetime=request.getParameter("saveTime");
if(CheckLogin.login(username, password)){
if(null!=savetime){
int saveTime=Integer.parseInt(savetime);//˜q™é‡ŒæŽ¥å—的表å•å€égؓ天æ¥è®¡ç®—çš?/span>
int seconds=saveTime*24*60*60;
Cookie cookie = new Cookie("user", username+"=="+password);
cookie.setMaxAge(seconds);
response.addCookie(cookie);
}
request.setAttribute("username",username);
request.getRequestDispatcher("/main126.jsp").forward(request,response);
}else{
request.getRequestDispatcher("/failure.jsp").forward(request,response);
}
}
}
验è¯ä»£ç åQ?/span>
package com.dr.course;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IndexFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
System.out.println("every request pass here haha");
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
Cookie[] cookies = request.getCookies();
String[] cooks = null;
String username = null;
String password = null;
if (cookies != null) {
for (Cookie coo : cookies) {
String aa = coo.getValue();
cooks = aa.split("==");
if (cooks.length == 2) {
username = cooks[0];
password = cooks[1];
}
}
}
System.out.println("cookie username | " + username);
System.out.println("cookie password | " + password);
if (CheckLogin.login(username, password)) {
System.err.println("check successfully cookie data ");
request.getSession().setAttribute("username",username);
request.getRequestDispatcher("/main126.jsp").forward(request, response);
}else{
arg2.doFilter(request,response );
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
package com.dr.course;
public class CheckLogin {
public static boolean login(String username, String password) {
if ("admin".equals(username) && "123456".equals(password)) {
return true;
} else {
return false;
}
}
}
web.xmlä¸é…¾|®å¦‚下:
- <filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.dr.course.IndexFilter</filter-class>
</filter>
- <filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/main126.jsp</url-pattern>
</filter-mapping>
- <servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.dr.course.LoginServlet</servlet-class>
</servlet>
- <servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
ž®†ç›®å½•åŠ å…¥åˆ°Tomcatä¸ï¼Œå¼€å?/span>TomcatåQŒæ‰“å¼€‹¹è§ˆå™¨è¾“入网å€:http://127.0.0.1:8080/AutoLogin/login.do˜q›è¡Œ‹¹‹è¯•ã€?/span>
JDBC¾~–程æ¥éª¤åQ?/span>
åŠ è²æ•°æ®åº“驱动(jar æ–‡äšgåQ?/span>
获得数æ®åº“连æŽ?/span>
创å¾è¯å¥ (SQL)
执行查询
é历¾l“æžœé›?/span>
关闿•°æ®åº“连æŽ?/span>
½CÞZ¾‹ž®ç¨‹åºï¼š
package com.dr.jdbc;
/**
* DriverManager 驱动½E‹åº½Ž¡ç†å™?/span> 在数æ®åº“和相应驱动程åºä¹‹é—´å¾ç«‹è¿žæŽ?/span>
* Connection 对象代表与数æ®åº“的连接,也就是在已ç»åŠ è²çš?/span>Driver和数æ®åº“之间建立˜qžæŽ¥
* Statement æä¾›åœ¨åŸºå±‚连接上˜q行SQLè¯å¥åQŒåƈ且访问结æž?/span>
* ResultSet åœ?/span>Statement执行SQLè¯å¥æ—Óž¼Œæœ‰æ—¶ä¼šè¿”å›?/span>ResultSet¾l“果集,包å«çš„æ˜¯æŸ¥è¯¢çš„结果集
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
query();
}
public static void query(){
Connection conn = null;
try {
//1.åŠ è²æ•°æ®åº“驱åŠ?/span>
Class.forName("com.mysql.jdbc.Driver");
//2.获得数æ®åº“连æŽ?/span>
//DriverManager 驱动½E‹åº½Ž¡ç†å™?/span> 在数æ®åº“和相应驱动程åºä¹‹é—´å¾ç«‹è¿ž
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc_db", "root", "1234");
//3.创å¾è¯å¥
String sql = "select * from UserTbl";
//˜q”回一个执è¡?/span>SQLçš„å¥æŸ?/span>
Statement stmt = conn.createStatement();
//˜q”回查询çš?/span>
//4.执行è¯å¥
ResultSet rs = stmt.executeQuery(sql);
//5.é历¾l“æžœé›?/span>
while(rs.next()){
int id = rs.getInt(1);
String username = rs.getString(2);
String password = rs.getString(3);
int age = rs.getInt(4);
System.out.println(id+":"+username+":"+password+":"+age);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null){
try { //关闿•°æ®åº“连æŽ?/span>
conn.close();
} catch (SQLException e) {
conn = null;
e.printStackTrace();
}
}
}
}
}