




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实实 验验 报报 告告 2014 2015 学年 第一学期 课程名称软件工程 双语 实验名称软件单元测试 实验时间2014年12月9日 指导单位计算机学院软件工程系 指导教师宗平 学生姓名楚灵翔班级学号B12040731 学院 系 计算机软件学院 专 业软件工程 1 实实 验验 报报 告告 实验名称实验名称软件单元测试指导教师指导教师宗平 实验类型实验类型上机上机实验学时实验学时2实验时间实验时间2014 12 9 一 一 实验目的和要求实验目的和要求 内容 要求学生能够完成单元测试的设计和运行 要求 能正确进行黑盒测试和白盒测试的测试用例设计 二 实验环境实验环境 实验设备实验设备 硬件 微机 软件 win7 操作系统 MyEclipse Java 编程软件 三 实验原理及内容三 实验原理及内容 参考 实验三 Software Unit Testing 实验指导书 了解 Java 单元测试 学会使用 Junit 编写自己的测试用例 并对被测试类进行测试 1 1 阅读 阅读 JunitJunit 的工作机制 了解单元测试 黑盒测试和白盒测试 的工作机制 了解单元测试 黑盒测试和白盒测试 资料 资料 均来自均来自 CSDNCSDN 博客 博客 一 相关概念 黑盒测试 把测试对象看作一个封闭的盒子 针对程序的功能来设计测试数据 白盒测试 把测试对象看作一个打开的盒子 程序内部的逻辑结构和其他信息对测试 人员是公开的 回归测试 软件或环境的修复或更正后的 再测试 自动测试工具对这类测试尤其有 用 单元测试 是最小粒度的测试 以测试某个功能或代码块 一般由程序员来做 因为 它需要知道内部程序设计和编码的细节 2 JUnit 是一个开发源代码的 Java 测试框架 用于编写和运行可重复的测试 他是用 于单元测试框架体系 xUnit 的一个实例 用于 java 语言 主要用于白盒测试 回归测试 二 Junit 入门简介 1 1 JUnitJUnit 的好处和的好处和 JUnitJUnit 单元测试编写原则单元测试编写原则 好处 A 可以使测试代码与产品代码分开 B 针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试 C 易于集成到测试人员的构建过程中 JUnit 和 Ant 的结合可以实施增量开发 D JUnit 是公开源代码的 可以进行二次开发 E 可以方便地对 JUnit 进行扩展 编写原则 A 是简化测试的编写 这种简化包括测试框架的学习和实际测试单元的编写 B 是使测试单元保持持久性 C 是可以利用既有的测试来编写相关的测试 2 2 JUnitJUnit 的特征的特征 A 使用断言方法判断期望值和实际值差异 返回 Boolean 值 B 测试驱动设备使用共同的初始化变量或者实例 C 测试包结构便于组织和集成运行 D 支持图型交互模式和文本交互模式 3 3 JUnitJUnit 框架组成框架组成 A 对测试目标进行测试的方法与过程集合 可称为测试用例 TestCase B 测试用例的集合 可容纳多个测试用例 TestCase 将其称作测试包 TestSuite C 测试结果的描述与记录 TestResult D 测试过程中的事件监听者 TestListener E 每一个测试方法所发生的与预期不一致状况的描述 称其测试失败元素 TestFailure F JUnit Framework 中的出错异常 AssertionFailedError JUnit 框架是一个典型的 Composite 模式 TestSuite 可以容纳任何派生自 Test 的对象 当调用 TestSuite 对象的 run 方法是 会遍历自己容纳的对象 逐个调用它们的 run 方法 可参考 程序员 2003 6 期 2 2 MyEclipseMyEclipse 环境下的单元测试实验环境下的单元测试实验 1 依据示例的过程截图如下 代码略 首先要创建 或选择 自己的工作空间 3 然后新建工程 按截图所示的步骤 其他以默认值设定即可 4 接下来创建并编写 UnitTest 类 点击右键 新建类 5 点击完成后 打开类 写入代码 然后再建测试用例 6 选择其中任一方法作为测试对象 这里选取的是 equals 方法 结果如下 7 2 为 Triangle 类编写测试用例 将一些要点的截图以及代码提供如下 点击完成 创建 Triangle 类 代码如下 package cn edu njupt public class Triangle 定义三角形的三边 protected long lborderA 0 protected long lborderB 0 protected long lborderC 0 构造函数 public Triangle long lborderA long lborderB long lborderC 8 this lborderA lborderA this lborderB lborderB this lborderC lborderC 判断是否是三角形 是返回 ture 不是返回 false public static boolean isTriangle Triangle triangle boolean isTriangle false 判断边界 大于 0 小于或等于 Long MAX VALUE 出界返回 false if triangle lborderA 0 return isTriangle 判断三角形类型 只有两条边相等的三角形返回字符串 等腰三角形 三边均相等的三角形返回字符串 等边三角形 三边均不等的三角形返回字符串 不等边三角形 public static String getType Triangle triangle String strType 不是三角形 判断是否是三角形 if isTriangle triangle 判断是否是等边三角形 if triangle lborderA triangle lborderB 判断是否是不等边三角形 else if triangle lborderA triangle lborderB 三角形既非三边全部相等 又非全部不等 只能是部分相等即等腰三角形 9 else strType 等腰三角形 return strType 下面创建测试用例 选择要测试的方法 我将两种方法一起测试以作比较 但是建议 一个测试用例只对一种方法测试 10 写入代码如下 package cn edu njupt import junit framework TestCase public class TriTest extends TestCase private Triangle tri1 private Triangle tri2 private Triangle tri3 public TriTest String arg0 super arg0 protected void setUp throws Exception super setUp tri1 new Triangle 3 4 5 tri2 new Triangle 4 4 4 tri3 new Triangle 6 5 5 protected void tearDown throws Exception super tearDown tri1 null tri2 null tri3 null public void testIsTriangle 11 assertTrue Triangle isTriangle tri1 assertTrue Triangle isTriangle tri2 assertTrue Triangle isTriangle tri3 assertFalse Triangle isTriangle tri1 assertFalse Triangle isTriangle tri2 assertFalse Triangle isTriangle tri3 public void testGetType assertNotNull Triangle getType tri1 assertNotNull Triangle getType tri2 assertNotNull Triangle getType tri3 点击运行 结果会因为实例的不同而不同 tri1 new Triangle 3 4 5 tri2 new Triangle 4 4 4 tri3 new Triangle 6 5 5 通过上图对比可知 两个方法之间是 相互独立的 3 3 补充介绍 补充介绍 JunitJunit 断言和最佳实践 断言和最佳实践 1 Junit 断言简介 都继承自 Assert 超类 assertEquals a b Asserts that two primitive values are equal 测试 a 是否等于 b a 和 b 是原始类型数值 primitive value 或者必须为实现比较而具有 equal 方法 assertFalse a Asserts that a condition a is false 测试 a 是否为 false 假 a 是一个 Boolean 数值 assertTrue a Asserts that a condition is true 测试 a 是否为 true 真 a 是一个 Boolean 数值 assertNotNull a Asserts that an object isn t null 测试 a 是否非空 a 是一个对象或者 null assertNull a 12 Asserts that an object is null 测试 a 是否为 null a 是一个对象或者 null assertNotSame a b Asserts that two objects do not refer to the same object 测试 a 和 b 是否没有都引用同一个对象 assertSame a b Asserts that two objects refer to the same object 测试 a 和 b 是否都引用同一个对象 fail message 当程序错误时候 输出错误消息 自定义断言 通常而言 JUnit 所提供的标准断言对大多数测试已经足够了 然而 在某些环境下 我 们可能更需要自定义一些断言来满足我们的需要 通常的做法是定义一个 TestCase 的子类 并且使用这个子类来满足所有的测试 新定义 的共享的断言或者公共代码放到这个子类中 2 Junit 最佳实践 一次只有一个测试对象 当无法预计这些对象发生改变时不会造成相互影响 选择有一个的测试方法名 testXxx 命名模式 Xxx 为待测方法 若在同一个方法增添 其他测试 testXxxYyy 的命名模式 Assert 调用总解释失败原因 第一个参数务必为描述文本 setUp 方法用来实例化 DefaultController Junit 会在调用其他之前调用 一个单元测试等于一个测试方法 简介 专注 测试任何可能失败的事务 让测试改善代码 编写单元测试常常有助有你写出更好的代码 理由很简单 test case 是你代码的用户只 有在使用代码时才能发现代码的缺点 所以 不要犹豫 应当根据测试时发现的不使之处重 构代码 使其易于使用 测试驱动开发 TDD 的实践就依赖于这条原则 通过先编写测试 你 就可以从用户的角度来开发你的类 让异常测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年【R1快开门式压力容器操作】考试题库及答案
- 2025年公路水运工程试验检测师公共基础试题库及答案(法规与技术标准)
- 2025年监理工程师之交通工程目标控制考试题库含答案a卷
- 桥梁招标课件
- 2025年品牌营销经理招聘面试模拟题与技巧解析
- 2026届安徽省亳州市第三十二中学高三化学第一学期期中联考模拟试题含解析
- 2025年电商运营岗位笔试模拟题及答案解析
- 2025护士资格证考试题库及答案
- 2025年大数据与人工智能课程考试试题及答案
- 2025年旅游管理与规划项目的考试试题及答案
- 2025企业单位网络与信息安全事件应急预案
- 企业品牌价值评估模型设计
- 2025-2026学年人教版(2024)小学数学三年级上册教学计划及进度表
- 2025年福建省工会社会工作者(工会专干)招聘考试(工会基础知识)历年参考题库含答案详解(5套)
- 2025年人工流产试题及答案
- 2025年文物保护工程从业资格考试(责任工程师·近现代重要史迹及代表性建筑)历年参考题库含答案详解(5套)
- 2025年调度持证上岗证考试题库
- 小区物业薪酬制度方案(3篇)
- 2025年计算机一级考试题库操作题及答案
- 高血压防治指南
- 2026届潍坊市达标名校中考联考语文试卷含解析
评论
0/150
提交评论