单元测试快速的编程反馈软件开发的困难n 软件总是要修改的n 添加新特性n Fix bugn 优化n 重构软件开发的困难n 修改软件是危险的举动n 我们如何得知已经正确的完成了修改?n 我们如何得知没有破坏任何(既有的)东西?软件开发的困难n 当前我们如何测试修改n 编译n 启动服务器n 启动一个以上的客户端n 鼠标操作n 看看效果n 重复这些步骤软件开发的困难n 这种测试的缺点n 不能立即获得反馈n 时间漫长n 运行次数不足n 甚至不测试软件开发的困难n 这种测试的外号n 编辑并祈祷单元测试n 概念n 由一组独立的测试构成,其中每个测试针对软件中的一个单独的原子行为单元n 并非检查一簇类是否能够合作良好,而是检查单个的对象行为是否正确单元测试n 传说中的例子,被测试的对象非常独立TEST( TestAdd )Math math;int result = math.Add( 11 , 12 );CHECK_EQUAL( 23 , result );单元测试n 传说中的过程n 实例化被测试对象n 提供测试数据n 调用被测试的方法n 验证测试结果单元测试n 实际情况 1n 内存访问异常, ItemMngS无法在测试中实例化TEST( TestItemMng )CItemMngS mng;