




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 JUnit 南京大学软件学院2009 1 2 课程内容 单元测试简介JUnit简介JUnit核心类 接口JUnit单元测试的步骤JUnit实例JUnit在Eclipse下的使用JUnit最佳实践 3 什么是软件测试 为了发现错误而执行程序的过程IEEE提出的软件工程标准术语中 软件测试被定义为 使用人工和自动手段来运行或测试某个系统的过程 其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别 4 测试类型 单元测试集成测试功能测试压力 负荷测试验收测试 5 单元测试 单元测试是开发者编写的一小段代码 用于检验被测代码的一个很小的 很明确的功能是否正确通常而言 一个单元测试是用于判断某个特定条件 或者场景 下某个特定函数的行为 6 单元测试的方法 人工静态分析 通过人工阅读代码的方式来查找代码中存在的错误自动静态分析 使用代码复查工具 主要用来发现语法特征错误自动动态测试 用工具自动生成测试用例并执行被测程序 主要用来发现行为特征错误人工动态测试 人工设定程序的输入和预期输出 执行程序 判断实际输出是否符合预期 若不符则自动报告错误 利用JUnit完成的便是人工动态测试 7 单元测试的必要性 带来比功能测试更广范围的测试覆盖让团队协作成为可能能够防止衰退 降低对调试的需要能为我们带来重构的勇气能改进实现设计当作开发者文档使用 8 JUnit简介 JUnit是Java社区中知名度最高的单元测试工具 由ErichGamma和KentBeck共同开发完成开源软件支持语言Smalltalk Java C Perl等等支持的IDEJBuilder VisualAge Eclipse等 9 JUnit功能 可供选择的其他前端或者test runner 用来显示你的测试结果用单独的classloader来运行每个单元测试 以避免副作用标准的资源初始化和回收方式 setUp和tearDown 各种不同的assert方法 让你检查测试结果的操作变得更容易同流行的工具 比如Ant 以及流行IDE比如Eclipse JBuilder整合 10 JUnit的好处 开源工具 可以免费使用 可以找到很多实际项目中的应用示例 由于源码开放 开发者还可以根据需要扩展JUnit功能可以将测试代码和产品代码分开测试代码编写容易 功能强大自动检验结果并且提供立即的反馈易于集成到开发的构建过程中 在软件的构建过程中完成对程序的单元测试测试包结构便于组织和集成运行 支持图形交互模式和文本交互模式 11 JUnit安装 Java的JUnit可从网上免费下载http junit org将下载的junit zip解压到你指定的目录设置环境变量Variable CLASSPATHVariableValue InstallPath junit jar测试运行 进入命令提示符安装目录下 javajunit swingui textui awtui TestRunnerjunit samples AllTests 12 JUnit框架 13 JUnit核心类及接口 1 14 JUnit核心类及接口 2 TestRunner 测试运行器 没有TestRunner接口 只有一个所有TestRunner都继承的BaseTestRunner执行测试并提供相关的结果的统计信息包含三个TestRunner类一个用于文本控制台一个用于Swing还有一个AWT 遗产代码 很少有人用 15 JUnit核心类及接口 3 TestRunner 测试运行器 实际运用中的SwingtestrunnerGreenbar通过测试Redbar测试失败 16 JUnit核心类及接口 4 TestCase 测试用例 把具有公共行为的测试归入一组扩展了JUnit的TestCase类的类 它以testXXX方法的形式包含一个或多个测试典型的TestCase包含两个主要部件fixture单元测试 17 JUnit核心类及接口 5 TestCase 测试用例 Fixture管理资源 复用配置代码运行一个或多个测试所需的公用资源或者数据集合TestCase通过setUp和tearDown方法来创建和销毁fixture典型应用数据库连接 生成输入文件 18 JUnit核心类及接口 6 TestCase 测试用例 创建单元测试方法继承自TestCase的一组assert方法封装了最常见的测试任务 这些assert方法可以极大地简化单元测试的编写 19 Assert超类所提供的8个核心方法 20 JUnit核心类及接口 7 TestCase 测试用例 创建单元测试方法除了Assert提供的方法之外 TestCase还实现了10个它自己的方法coutTestCases CreateResult getName run runBare setName setup teardown toString 21 TestCase的10个自己的方法 22 JUnit核心类及接口 8 TestCase 测试用例 这18个方法共同为你提供了使用JUnit编写测试的全部功能 23 JUnit核心类及接口 9 TestSuite 测试集合 testsuite是把多个相关测试归入一组便捷方式若你没有提供自己的TestSuite testrunner会自动创建一个缺省的TestSuite不能满足时 可能会想组合多个suite 把它们作为主suite的一部分 这些suite来自几个不同的package 24 JUnit核心类及接口 10 TestSuite 测试集合 通常情况下TestAll类仅仅包括一个静态的suite方法 这个方法会注册应用程序需要定期执行的所有Test对象 包括TestCase对象和TestSuite对象 下面是一个典型的TestAll类 25 TestAll类 importjunit framework Test importjunit framework TestSuite importjunitbook sampling TestDefaultController publicclassTestAllextendTestCase publicstaticTestsuite TestSuitesuite newTestSuite Alltestsfrompart1 suite addTestSuite TestCalculator3 class suite addTestSuite TestDefaultController class returnsuite 26 JUnit核心类及接口 11 TestResult所有的TestSuite都有一个对应的TestResult负责收集TestCase的执行结果 储存了所有测试的详细情况 是通过还是失败 失败则会创建一个TestFailure对象TestRunner使用TestResult来报告测试结果 没有TestFailure对象进度条就用绿色 否则进度条用红色并输出失败测试的数目 27 JUnit核心类及接口 12 TestResultJUnit区分失败和错误失败 是可以预期的 代码的改变不时会造成断言失败 你只要修正代码 断言就可以再次通过错误 比如常规程序抛出的异常 则是测试时不可预料的 28 JUnit核心类及接口 13 TestListener帮助对象访问TestResult并创建有用的报告 虽然Testlistener接口是JUnit框架的重要部分 但是你编写自己的测试时不必实现这个接口 只有需要扩展JUnit框架时才会需要实现这个接口 29 JUnit单元测试的步骤 1 JUnit成员三重唱 共同产生测试结果当你需要编写更多的TestCase的时候 你可以创建更多的TestCase对象 当你需要一次执行多个TestCase对象的时候 您可以创建一个TestSuite对象或使用缺省的TestSuite对象进行封装 为了执行TestSuite 需要使用TestRunner 通过TestRunner的执行生成TestResult对象 30 JUnit单元测试的步骤 2 重载setUp 封装测试环境初始化及测试数据准备设计测试方法 以testXXX命名在测试方法中使用断言方法如assertEquals assertTrue 等设计测试套件 或使用缺省的测试套件 调用TestRunner执行测试脚本 生成测试结果重载tearDown 析构测试环境 执行收尾动作 31 待测类 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 32 该类的测试类 1 4 33 该类的测试类 2 4 34 该类的测试类 3 4 35 该类的测试类 4 4 36 同时测试多个类 1 现有两个测试类CalculatorTest javaLargestTest java如何一下全部运行 如何自动化测试 37 同时测试多个类 2 38 在Eclipse下使用JUnit 1 首先新建一个项目单元测试代码把它和被测试代码混在一起 这显然会照成混乱建议您分别为单元测试代码与被测试代码创建单独的目录 并保证测试代码和被测试代码使用相同的包名 这样既保证了代码的分离 同时还保证了查找的方便遵照这条原则 我们在项目HelloJUnit根目录下添加一个新目录testsrc 并把它加入到项目源代码目录中 39 在Eclipse下使用JUnit 2 给新建一个HelloJunit类添加一个abs 方法 packageexample publicclassHelloJunit publicstaticintabs intn returnn 0 n n 40 在Eclipse下使用JUnit 3 在类上右击 选择 new JUnitTestCase 新建一个HelloJUnitTest类 用来测试Hello类选择刚刚建立的文件夹 Hello testscr 选中setUp 和tearDown 然后点击 Next 选择要测试的方法 我们选中abs int 方法点击 finish 跳出需要添加JUnit jar包 点击 OK 41 在Eclipse下使用JUnit 4 HelloJunitTest java文件中输入代码 42 在Eclipse下使用JUnit 5 在测试类上点击右键 在弹出菜单中选择 RunAs JUnitTest 43 44 JUnit最佳实践 1 一次只测试一个对象单元测试独立地检查你创建的每个对象 这样就可以在第一时间把它们隔离起来 如果一次测试多于一个对象 那么你就无法预测当这些对象发生改变时它们会如何交互 45 JUnit最佳实践 2 在assert调用中解释失败原因用到assert方法时 使用第一个参数是String类型的那个签名 这个参数让你可以提供一个有意义的文本描述 在断言失败时JUnittestrunner会显示这个描述 46 JUnit最佳实践 3 选择有意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年嘉兴桐乡市卫生健康局下属部分医疗卫生单位招聘编外合同人员62人考试备考试题及答案解析
- 新一代物联网项目合作协议
- 2025年宿州泗县大学生乡村医生专项计划招聘2人考试备考试题及答案解析
- 2025云南大学招聘行政助理49人笔试模拟试题及答案解析
- 2025内蒙古巴彦淖尔市交通投资(集团)有限公司招聘中高级经营管理人员8人考试模拟试题及答案解析
- 2025四川飞机维修工程有限公司招聘10人笔试备考题库及答案解析
- 2025国家卫生健康委能力建设和继续教育中心面向社会招聘2人笔试模拟试题及答案解析
- 2025浙江温州市鹿城区区属国有企业面向社会和面向退役士兵招聘(选聘)34人考试参考题库附答案解析
- 路桥系毕业论文5000
- 关于模具专业的毕业论文
- 2025 年小升初成都市初一新生分班考试语文试卷(带答案解析)-(部编版)
- 人教版七年级上册数学教学计划
- 重庆市七校联盟2024-2025学年高一下学期期末考试物理试卷(含解析)
- 2024年河北科技师范学院招聘真题
- 培训班校长述职报告课件
- 传染病信息报告管理规范2025年版培训试题及答案
- 抗菌药物处方医师培训考核试题及答案
- 新时代班主任角色转型与实践案例
- 统编版二年级《语文》上册新教材解读课件
- 公务用车管理制度与车辆维护
- 2025年中国农业银行宁夏回族自治区分行春季招聘58人笔试模拟试题参考答案详解
评论
0/150
提交评论