快速业务通道

使用Spring 2.5 TestContext测试框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
访问 Spring 容器,执行获取 Bean,发布事件等操作。

此外,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);    }

在业务方法执行后,我们查询数据库中相应记录以检查是否和期望的效果一致,如 ① 和 ② 所示。在 ③ 处,我们使用 SimpleJdbcTemplate 查询 t_login_log,以检查该表中是否已经添加了一条用户登录日志。

注意:由于我们的 DAO 层采用 Spring JDBC 框架,它没有采用服务层缓存技术,所以可以使用 DAO 类返回数据库中的数据。如果采用 Hibernate 等 ORM 框架,由于它们采用了服务层缓存的技术,为了获取数据库中的相应数据,需要在业务方法执行后调用 HibernateTemplate.flush() 方法,将缓存中的对象同步到数据库中,这时才可以通过 SimpleJdbcTemplate 在数据库中访问业务方法的执行情况。

使用Spring 2.5 TestContext测试框架(7)

时间:2011-01-26 IBM 陈雄华

Spring TestContext 测试框架体系结构

在前面,我们直接通过扩展 AbstractTransactionalJUnit4SpringContextTests 编写测试用例,在了解了编写基于 TestContext 测试框架的测试用例后,现在是了解 TestContext 测试框架本身的时候了。

TestContext 核心类、支持类以及注解类

TestContext 测试框架的核心由 org.springframew

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号