浏览 2007 次
锁定老帖子 主题:实践中的重构17_表驱动法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-22
http://zhang-xzhi-xjtu.iteye.com/blog/875986 由于测试的数量比较多,而且结构相似,因此,才用表驱动法也是一个不错的选择。 /** * 表驱动法。 * */ public class TestUserQueryService2 { /** * 每一个字符串代表一个测试数据。 * * <pre> * 格式为 * 历史库生产库时间分隔点,历史库大小,生产库大小,查询的起始时间,查询的结束时间, * 查询的页大小,查询的页码,查询结果的总项数,查询结果历史库的总项数,查询结果历史库的起始点, * 查询结果生产库的总项数,查询结果生产库的起始点 * </pre> * */ private static List<String> testData; /** * 初始化测试数据。 * */ static { testData = new ArrayList<String>(); // 只查历史库,满页 testData.add("19820110,40,20,19820101,19820107,10,1,10,10,1,0,0"); // 只查历史库,不满页 testData.add("19820110,43,20,19820101,19820107,10,5,3,3,41,0,0"); // 只查生产库,满页 testData.add("19810804,40,20,19820101,19820107,10,2,10,0,0,10,11"); // 只查生产库,不满页 testData.add("19810801,43,23,19820101,19820107,10,3,3,0,0,3,21"); // 跨库,满页 testData.add("19820103,43,20,19820101,19820107,10,5,10,3,41,7,1"); // 跨库,不满页 testData.add("19820103,43,4,19820101,19820107,10,5,7,3,41,4,1"); // 只查生产库,对齐满页 testData.add("19820103,40,60,19820101,19820107,10,6,10,0,0,10,11"); // 只查生产库,对齐不满页 testData.add("19820103,40,17,19820101,19820107,10,6,7,0,0,7,11"); // 只查生产库,不对齐满页 testData.add("19820103,43,40,19820101,19820107,10,6,10,0,0,10,8"); // 只查生产库,不对齐不满页 testData.add("19820103,43,20,19820101,19820107,10,7,3,0,0,3,18"); } /** * 解析"yyyyMMdd"形式的字符串为日期。 * */ private static Date parseDate(String dateStr) { Date date = null; try { DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); date = dateFormat.parse(dateStr); } catch (Exception e) { throw new RuntimeException(e); } return date; } private UserQueryService queryService; private MockUserQueryManager mockUserQueryManager; /** * 初始化测试环境。 * */ private void setUpEnv(String hisDate, int hisSize, int prodSize) { queryService = new UserQueryService(); mockUserQueryManager = new MockUserQueryManager(parseDate(hisDate), hisSize, prodSize); queryService.setManager(mockUserQueryManager); } /** * 验证返回的结果。 * * @param userList * 用户列表。 * @param size * 总用户个数。 * @param hisSize * 历史库返回的用户个数。 * @param hisFrom * 历史库返回用户的起始index。 * @param prodSize * 生产库返回的用户个数。 * @param prodFrom * 生产库返回的用户起始index。 * * */ public void assertUserList(List<User> userList, int size, int hisSize, int hisFrom, int prodSize, int prodFrom) { Assert.assertNotNull(userList); Assert.assertEquals(size, hisSize + prodSize); Assert.assertEquals(size, userList.size()); for (int i = 0; i < hisSize; i++) { User user = userList.get(i); Assert.assertEquals("his_" + (hisFrom + i), user.getName()); } for (int i = 0; i < prodSize; i++) { User user = userList.get(hisSize + i); Assert.assertEquals("prod_" + (prodFrom + i), user.getName()); } } @Test public void testQuery() { for (String data : testData) { String[] parts = data.split(","); String hisDate = parts[0]; int hisSize = Integer.valueOf(parts[1]); int prodSize = Integer.valueOf(parts[2]); setUpEnv(hisDate, hisSize, prodSize); String start = parts[3]; String end = parts[4]; int pageSize = Integer.valueOf(parts[5]); int pageNum = Integer.valueOf(parts[6]); List<User> userList = queryService.findUsers(parseDate(start), parseDate(end), pageSize, pageNum); int resultSize = Integer.valueOf(parts[7]); int resultHisSize = Integer.valueOf(parts[8]); int resultHisFrom = Integer.valueOf(parts[9]); int resultProdSize = Integer.valueOf(parts[10]); int resultProdFrom = Integer.valueOf(parts[11]); assertUserList(userList, resultSize, resultHisSize, resultHisFrom, resultProdSize, resultProdFrom); } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-22
最后修改:2011-02-22
DataMap dm = new DataMap("hissize=23","porsize=44"......);
自己实现一个DataMap放在测试的工具箱里很有用. |
|
返回顶楼 | |