学习并仿写一个开源项目,O(∩_∩)O~~
Junit : 是一个简单的框架,能让程序员轻松的编写,并且自动化运行的单元测试。
自动化单元测试的特点:
(1) 自动执行- 启动以后能把所有的测试都运行
- 一个测试的失败不影响后续测试的运行(2) 可生成定制的报告
- 哪些成功?哪些失败?有无异常?
- 输出形式:xml,html,文本 …(3) 运行速度快
(4) 测试脚本开发要简单
测试用例 最好 是一个对象
希望测试用例能有:
(1) 包含一段代码
(2) 能执行
(3) 能获取运行结果so,测试用例最好是一个对象
测试应该是隔离的
(1) 一个单元测试的运行不应该影响另外一个单元测试
(2) 运行单元测试之前需要准备工作
(3) 运行单元测试之后需要清理工作
引生出:模板模式
遇到问题:一个TestCase 有多个测试方法,该如何创建、调用。
(1)一个TestCase只包含一个方法
(2)使用匿名类,重写runTest() 方法,则每个测试方法都对应一个TestCase
(3)反射方法
遇到问题:一个或者多个问题
(1)到目前为止,框架只支持每次运行一个用户自定义的TestCase
(2)能不能“透明地”运行多个?
(3)调用方不应该关心是一个还是多个PS :
引生出:组合模式
遇到问题:一个类中有多个测试方法(test1,test2,。。。),难道每次都要加进去?
解决: 约定忠于配置
核心代码
实现: Assert
assertEquals(5, actual.num);
遇到问题: 如何保存测试用例运行时异常和断言失败?
分离测试用例和测试结果 : 收集参数模式
引入 : TestResult
首先:TestResult,在创建TestSuite之前就创建了,并以参数形式传入TestCase 和TestSuite
总结: 涉及到的设计模式:
- Command模式 : 表达一个测试用例
- Template Method : 实现数据的准备和清理
- Composite : 屏蔽一个和多个的差别
- Collect Parameter : 隔离测试用例和测试结果