




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章JUnit单元测试框架 上节回顾 JUnit已经13岁了 是由ErichGamma和KentBeck为Java语言创建了一个简单但有效的单元测试框架 JUnit是Java中开发单元测试的框架标准 世界上无数软件项目使用它 支持测试代码的独立 是XP编程思想的体现 解释 TDD 本节课内容简介 1 JUnit实例2 JUnit核心简介3 JUnit实例应用4 JUnit最佳实践 9 1JUnit实例 源程序 publicclassComputer privateinta privateintb publicComputer intx inty a x b y publicintadd returna b publicintminus returna b publicintmultiply returna b publicintdivide if b 0 returna b elsereturn0 9 1JUnit实例 测试代码 importjunit framework TestCase publicclassTestComputerextendsTestCase protectedvoidsetUp throwsException super setUp protectedvoidtearDown throwsException super tearDown publicvoidtestAdd assertEquals 25 newComputer 20 5 add publicvoidtestMinus assertEquals 15 newComputer 20 5 minus publicvoidtestMultiply assertEquals 90 newComputer 20 5 multiply publicvoidtestDivide assertEquals 4 newComputer 20 5 divide 9 2JUnit核心简介 操作步骤 将B通过命令行方式或图形界面选择方式传递给R R自动运行测试 并显示结果 JUnit框架 测试人员对TestCase类进行继承 开发自己的类测试驱动程序 其余的类用来支援TestCase类 比如 TestSuite用来聚合多个测试用例 TestCase Assert类实现期望值 Expected 和实际值 Actual 的验证TestResult收集所有测试用例执行后结果 Test接口是这个包的关键所在 它建立了TestCase和TestSuite之间的关联 同时为整个框架做了扩展预留 9 2JUnit核心简介 JUnit核心 TestSuite TestCase TestRunner TestResult ThemeGalleryisaDesignDigitalContent ContentsmalldevelopedbyGuildDesignInc 9 2 1TestCase 扩展了JUnit的TestCase类的类 以testXxx方法的形式包含一个或多个测试 TestCase是Test接口的抽象实现 其构造函数TestCase Stringname 可以根据输入的测试名称创建一个测试用例 setUp 方法用于集中初始化测试所需的所有变量和实例 并在调用测试类中的每个测试方法前都会再次执行 这样保证了每次测试的独立性 tearDown 方法则在执行测试后 释放变量和实例 setUp 和tearDown 是JUnit设置公共fixture的方法 Fixture 指执行一个或多个测试方法时所需要的公共资源或数据 例如 测试环境或测试数据等 在进行大部分测试之前 我们都需要做大量的铺垫 为设计准备fixture 9 2 1TestCase fixture 9 2 2TestSuite类 TestSuite负责组装多个TestCases 测试中可能包括了对被测类的多个测试 TestSuite负责收集组合这些测试 以便可以在一个测试中 完成全部的对被测类的多个测试 TestSuite类实现了Test接口 且可以包含其他的TestSuites 它可以处理加入Test时抛出的所有异常 TestSuite处理测试用例时有5个规则 如下 测试用例必须是公有类 Public 测试用例必须继承TestCase类 测试用例的测试方法必须是公有的 Public 测试用例的测试方法必须被声明为void 测试用例中测试方法的前置名词必须是test 9 2 2TestSuite类 9 2 3TestRunner类 TestRunner用来启动测试的用户界面 BaseTestRunner是所有TestRunner的超类Junit提供了三种运行器 分别为 testui TestRunner awtui TestRunner swingui TestRunner 一种是文本方式 后两种是图形方式都扩展于BaseTestRunner测试成功 字符界面返回OK 图形显示条界面呈绿色 且没有failures和errors提示 JUnit三骨干 JUnit成员三重唱 共同产生测试结果当你需要编写更多的TestCase的时候 你可以创建更多的TestCase对象 当你需要一次执行多个TestCase对象的时候 您可以创建一个TestSuite对象或使用缺省的TestSuite对象进行封装 为了执行TestSuite 需要使用TestRunner 通过TestRunner的执行生成TestResult对象 JUnit核心 Test 运行测试并把结果传递给TestResult Assert 当条件成立时assert方法保持沉默 但若条件不成立就抛出异常 TestResult 测试结果的描述与记录TestListener 测试过程中的事件监听者前三个类和后4个类紧密配合 形成JUnit框架的核心 9 2 4Test接口 Test 是TestCase TestSuite的共同接口 run TestResultresult 用来运行Test 并且将结果保存到TestResult它的publicintcountTestCases 方法用来统计本次测试有多少个TestCase publicvoidrun TestResult 方法中 参数TestResult做为接受测试结果的实例 run方法用于执行本次测试 9 2 5TestResult类 TestResult类是一个收集器 负责收集TestCase的执行结果 它储存了所有测试的详细情况 是通过还是失败 失败则会创建一个TestFailure对象TestRunner使用TestResult来报告测试结果 没有TestFailure对象进度条就用绿色 否则进度条用红色并输出失败测试的数目 Failure与ErrorFailure是一个期望的被assert 方法检查到的失败如果result的结果不等于60 则是一个Failure Error是测试不可预料的 是意外的问题引起的错误 如 ArrayIndexOutOfBoundsException 9 2 5TestResult类 知识扩展 9 2 6JUnit断言 在程序中特定部位插入某些用以判断变量特性的语句 使得程序执行中这些语句得以证实 从而使程序的运行特性得到证实 我们把插入的这些语句称为断言 常用的断言方法 Juni框架提供了TestListener接口来帮助对象获取TestResult并创建有用的报告 TestResult收集了测试的相关信息 TestRunner报告这些信息 TestRunners其实就是实现了TestListener接口 9 2 7TestListener接口 JUnit核心回顾 简单的说 JUnit工作流程就是 一个TestRunner运行一个TestSuite该TestSuite可以由一个或多个TestCases 或者由其他的TestSuites 所组成 运行的测试结果由TestResult收集 由TestRunner来报告这些信息 在常规工作中 你大多只和TestCase打交道 JUnit核心回顾 执行步骤 重载setUp 封装测试环境初始化及测试数据准备设计测试方法 以testXxx命名在测试方法中使用断言方法如assertEquals assertTrue 等设计测试套件 或使用缺省的测试套件 调用TestRunner执行测试脚本 生成测试结果重载tearDown 析构测试环境 执行收尾动作 JUnit框架 9 3JUnit测试实例 9 3 1JUnit操作流程 9 3 2JUnit测试实例 例1 待测类 publicclassCalculator publicintadd inta intb returna b publicintminus inta intb returna b publicintmultiply inta intb returna b publicintdivide inta intb throwsException if 0 b thrownewException 除数不能为零 returna b 该类的测试类 1 4 publicclassCalculatorTestextendsTestCase privateCalculatorcal publicvoidsetUp cal newCalculator publicvoidtearDown 该类的测试类 2 4 该类的测试类 3 4 该类的测试类 4 4 例2 MaxMinTool java publicclassMaxMinTool publicstaticintgetMax int arr intmax Integer MIN VALUE for inti 0 imax max arr i returnmax publicstaticintgetMin int arr intmin Integer MAX VALUE for inti 0 i arr length i if arr i min min arr i returnmin 编写MaxMinTool java的测试类 publicclassMaxMinTestextendsTestCase publicvoidtestMax int arr 5 4 3 2 1 0 1 2 3 4 5 assertEquals 5 MaxMinTool getMax arr publicvoidtestMin int arr 5 4 3 2 1 0 1 2 3 4 5 assertEquals 5 MaxMinTool getMin arr 编写测试类 显然 所准备的矩阵重复出现在两个单元测试之中 重复的程序码在设计中可以减少就尽量减少 在这两个单元测试中 整数矩阵是单元方法所需要的资源 我们称之为fixture 也就是一个测试时所需要的资源集合 对于重复出现在各个单元测试中的fixture 可以集中加以管理 可以在继承TestCase之后 重新定义setUp 与tearDown 方法 将数个单元测试所需要的fixture在setUp 中创建 并在tearDown 中销毁 例如 测试类的改进 publicclassMaxMinTestextendsTestCase privateint arr protectedvoidsetUp throwsException super setUp arr newint 5 4 3 2 1 0 1 2 3 4 5 protectedvoidtearDown throwsException super tearDown arr null publicvoidtestMax assertEquals 5 MaxMin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年江西中烟工业公司笔试试题及答案
- 川菜考试题及答案
- 取样考试题及答案
- 办公考试题及答案
- 中华传统文化融入《思想道德与法治》知到智慧树答案
- 基础护理学习题及答案
- 高血压试题及答案4
- 2025年二手车转让与售后服务保障协议
- 2025年房屋拆迁补偿安置协议书范本与案例分析
- 2025年度养老地产项目委托销售代理协议
- 电影院安全生产与安全管理规定制度
- 废气处理合同协议
- 镁铝合金行业前景
- 2025-2030中国余热回收行业市场现状供需分析及投资评估规划分析研究报告
- 无人机物流配送服务手册
- 见证取样送检计划方案
- 二年级上册语文课内阅读理解每日一练(含答案)
- 2025-2030年中国功率器件市场发展趋势规划研究报告
- 基层管理培训课程
- 宇宙飞船的发射与回收技术分析
- 2024考研 政治 思维导图(马原)
评论
0/150
提交评论