junit进行单元测试

先给出源文件代码: java

数据持久层组件:UserInfo.java  //用户实体类 sql

 

package com.lyq.model;

 public class UserInfo {
	 
 private int  id;
 private String account;
 private String password;
 
 public int getId() {
	return id;
 }
 public void setId(int id) {
	this.id = id;
 }
 public String getAccount() {
	return account;
 }
 public void setAccount(String account) {
	this.account = account;
 }
 public String getPassword() {
	return password;
 }
 public void setPassword(String password) {
	this.password = password;
 }
 
}

数据访问层组件:UserInfoDAO.java  //文件有一个添加用户的方法 int addUserInfo(UserInfo userInfo); 单元测试

 

package com.lyq.dao;
import java.sql.PreparedStatement;
import java.sql.Connection;
import com.lyq.model.UserInfo;
import java.sql.ResultSet;
public class UserInfoDAO {
    Connection conn=null;
    ResultSet rs=null;
    static UserInfoDAO userInfoDAO=null;
    public static UserInfoDAO getUserInfoDAO(){
    	if(userInfoDAO==null)userInfoDAO=new UserInfoDAO();
    	return userInfoDAO;
    }
	public int addUserInfo(UserInfo userInfo){
		conn=DBCon.getConn();
		int i=-1;
		try{
		String sql="insert into tb_userinfo(account,password) values(?,?)";
		PreparedStatement pstmt=conn.prepareStatement(sql);
		pstmt.setString(1, userInfo.getAccount());
		pstmt.setString(2, userInfo.getPassword());
		i=pstmt.executeUpdate(sql); //此处方法调用错误,因此程序会出现异常
		}catch(Exception e){
			e.printStackTrace();
		}
		return i;
	}
}

下面开始进入单元测试,配置junit测试环境在此就不说了; 测试

右击要进行测试的java类UserInfoDAO.java, this

在弹出的对话框中选择setUp()和trearDown()方法,如图: code

单击“Next”,在弹出的对话框中选择要测试的方法addUserInfo(UserInfo),如图: get

单击“Finish",就会生成下面的测试用例文件 UserInfoDAOTest.java,如图: it

在此处重写setUp()、tearDown()和testAddUserInfo()方法,重写后的文件以下: io

 

package com.lyq.dao;

import static org.junit.Assert.*;

import com.lyq.model.UserInfo;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class UserInfoDAOTest {
	 UserInfoDAO userInfoDAO=null;
	 UserInfo userInfo=null;
	@Before
	public void setUp() throws Exception {
			userInfoDAO=UserInfoDAO.getUserInfoDAO();
			userInfo=new UserInfo();
			userInfo.setAccount("xiaoxiao");
			userInfo.setPassword("xiaohai");
			
	} @After public void tearDown() throws Exception {
		userInfoDAO=null;
	} @Test public void testAddUserInfo() {
		//fail("Not yet implemented");
		assertEquals("测试testAddUserInfo()方法失败!",userInfoDAO.addUserInfo(userInfo),1);
	}

}

上述代码中的assertEquals()方法是org.junit.Assert类中的静态方法。其用法以下: class

assertEquals(String message,String expected,String actual)

其中,参数message表示断言失败的信息,能够省略;expected表示指望的数据;actual表示实际的数据。assertEquals()方法用来断言expected表示的数据与actual表示的数据相等,若不等,则抛出异常并输出message表示的提示信息。

运行测试用例,结果如图:

提示错误:指望值应为-1,但实际值为1.

如今把UserInfoDAO.java文件中addUserInfo(UserInfo userInfo)方法中的那条错误语句改正过来;

改成:i=pstmt.executeUpdate();

再次运行测试用例,就会出现指望的结果,如图:

相关文章
相关标签/搜索