WEB开发网
开发学院软件开发Java 使用 Spring 2.5 TestContext 测试框架 阅读

使用 Spring 2.5 TestContext 测试框架

 2009-11-11 00:00:00 来源:WEB开发网   
核心提示: 此外,AbstractTransactionalJUnit4SpringContextTests 还提供了若干个访问数据库的便捷方法,使用 Spring 2.5 TestContext 测试框架(9),说明如下:protected int countRowsInTable(String tabl

此外,AbstractTransactionalJUnit4SpringContextTests 还提供了若干个访问数据库的便捷方法,说明如下:

protected int countRowsInTable(String tableName) :计算数据表的记录数。

protected int deleteFromTables(String... names):删除表中的记录,可以指定多张表。

protected void executeSqlScript(String sqlResourcePath, boolean continueOnError):执行 SQL 脚本文件,在脚本文件中,其格式必须一个 SQL 语句一行。

在测试方法 handleUserLogin() 的 ② 处,我们通过 userDao 获取 prepareTestData() 添加的测试数据,测试方法在测试数据的基础上执行业务逻辑。使用这种测试方式后,在任何情况下运行 TestUserService 都不会发生业务逻辑之外的问题。

检验业务逻辑的正确性

到目前为此,TestUserService 的 handleUserLogin() 测试方法仅是简单地执行 UserService#handleUserLogin() 业务方法,但并没有在业务方法执行后检查执行结果的正确性,因此这个测试是不到位的。也就是说,我们必须访问数据库以检查业务方法对数据更改是否成功:这包括积分(credits)、最后登录时间(last_visit)、最后登录 IP(last_ip)以及登录日志表中的登录日志记录(t_login_log)。下面,我们补充这项重要的检查数据正确性的工作:


清单5. 检验业务方法执行结果的正确性
@Test 
public void handleUserLogin(){ 
  User user = userDao.getUserById(userId); 
  user.setLastIp("127.0.0.1"); 
  Date now = new Date(); 
  user.setLastVisit(now.getTime()); 
  userService.handleUserLogin(user); 
 
  //------------------以下为业务执行结果检查的代码--------------------- 
  User newUser = userDao.getUserById(userId); 
  Assert.assertEquals(5, newUser.getCredits()); //①检测积分 
  //①检测最后登录时间和IP 
  Assert.assertEquals(now.getTime(), newUser.getLastVisit()); 
  Assert.assertEquals("127.0.0.1",newUser.getLastIp()); 
    
  // ③检测登录记录 
  String sql = "select count(1) from t_login_log where user_id=? "+ 
    “ and login_datetime=? and ip=?"; 
  int logCount =simpleJdbcTemplate.queryForInt(sql, user.getUserId(), 
    user.getLastVisit(),user.getLastIp()); 
  Assert.assertEquals(1, logCount); 
  } 

上一页  4 5 6 7 8 9 10  下一页

Tags:使用 Spring TestContext

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接