首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

实践中的复建17_表驱动法

2012-12-27 
实践中的重构17_表驱动法代码以及初始的单元测试见http://zhang-xzhi-xjtu.iteye.com/blog/875986由于测试

实践中的重构17_表驱动法
代码以及初始的单元测试见
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());}}@Testpublic 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);}}}
1 楼 抛出异常的爱 2011-02-22   DataMap dm = new DataMap("hissize=23","porsize=44"......);
自己实现一个DataMap放在测试的工具箱里很有用.

热点排行