先给出源文件代码: 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();
再次运行测试用例,就会出现指望的结果,如图: