0OAD项目研究总结 JUnit 0461080李寻 0461005朱帆 0461023何文俊 0461079夏勇杰 0461106张蔚婷
OOAD 项目研究总结 JUnit 0461080 李寻 0461005 朱帆 0461023 何文俊 0461079 夏勇杰 0461106 张蔚婷
目录 1. JUnit研究总结…. 11 JUnit简介(李寻) 111单元测试 1111单元测试的好处 1112单元测试的针对对象… 111.3单元测试工具和框架 1.12 JUnit优点和 JUnit单元测试编写原则 113 JUnit的特征 114 JUnit框架与组成 115 JUnit的安装和配置 12 JUnit架构分析(李寻) 121接口分析 12.2 JUnit架构 13 JUnit设计模式(夏勇杰) 131简介 132什么是 JUnit的目标呢? 133 JUnit的设计 777888 13.31由此开始一 Test case 1332空白填充-run() 1333结果报告一 TestResult 1334不愚蠢的子类一再论 Test case 1335不必关心一个或多个一 TestSuit 1336总结. 134结论 19 14 JUnit版本演化(朱帆) 15 JUnit测试(张蔚婷). 16 JUnit集成应用(何文俊) 161应用综述 162Jnit与 Eclipse集成 2.个人贡献总结 21李寻 211小组组长 2.1.2 JUnit初步探索 21.3 JUnit架构探索 22夏勇杰 23朱帆 231个人贡献 232个人感想 24何文俊 2.5张蔚婷
目录 1. JUnit 研究总结 .............................................................................................................................3 1.1 JUnit 简介(李寻).................................................................................................................3 1.1.1 单元测试.................................................................................................................3 1.1.1.1 单元测试的好处..........................................................................................3 1.1.1.2 单元测试的针对对象..................................................................................3 1.1.1.3 单元测试工具和框架..................................................................................3 1.1.2 JUnit 优点和 JUnit 单元测试编写原则...................................................................3 1.1.3 JUnit 的特征 ............................................................................................................4 1.1.4 JUnit 框架与组成.....................................................................................................4 1.1.5 JUnit 的安装和配置.................................................................................................4 1.2 JUnit 架构分析(李寻).........................................................................................................5 1.2.1 接口分析.................................................................................................................5 1.2.2 JUnit 架构 ................................................................................................................7 1.3 JUnit 设计模式(夏勇杰) .....................................................................................................7 1.3.1 简介.........................................................................................................................7 1.3.2 什么是 JUnit 的目标呢? ......................................................................................8 1.3.3 JUnit 的设计 ............................................................................................................8 1.3.3.1 由此开始-TestCase.................................................................................8 1.3.3.2 空白填充-run()....................................................................................10 1.3.3.3 结果报告-TestResult ...........................................................................11 1.3.3.4 不愚蠢的子类-再论 TestCase..............................................................14 1.3.3.5 不必关心一个或多个-TestSuit ...........................................................15 1.3.3.6 总结........................................................................................................17 1.3.4 结论.................................................................................................................19 1.4 JUnit 版本演化(朱帆).......................................................................................................20 1.5 JUnit 测试(张蔚婷)...........................................................................................................21 1.6 JUnit 集成应用(何文俊) ...................................................................................................24 1.6.1 应用综述...............................................................................................................24 1.6.2 JUnit 与 Eclipse 集成 .............................................................................................24 2. 个人贡献总结............................................................................................................................34 2.1 李寻 .................................................................................................................................34 2.1.1 小组组长...............................................................................................................34 2.1.2 JUnit 初步探索 ......................................................................................................35 2.1.3 JUnit 架构探索 ......................................................................................................35 2.2 夏勇杰..............................................................................................................................35 2.3 朱帆 .................................................................................................................................35 2.3.1 个人贡献................................................................................................................35 2.3.2 个人感想...............................................................................................................36 2.4 何文俊..............................................................................................................................36 2.5 张蔚婷..............................................................................................................................36
1.儿Unt研究总结 11 JUnit简介 111单元测试 1111单元测试的好处 A、提高开发速度——测试是以自动化方式执行的,提升了测试代 码的执行效率。 B、提高软件代码质量—一它使用小版本发布至集成,便于实现人 员除错。同时引入重构概念,让代码更干净和富有弹性。 C、提升系统的可信赖度——它是回归测试的一种。支持修复或更 正后的“再测试”,可确保代码的正确性。 111.2单元测试的针对对象 A、面向过程的软件开发针对过程 B、面向对象的软件开发针对对象。 C、可以做类测试,功能测试,接口测试(最常用于测试类中的方 法) 1113单元测试工具和框架 目前的最流行的单元测试工具是 XUnit系列框架,常用的根据语言 不同分为儿Unt(java), CppUnit(C++), DUnit( Delphi),Nnit (net), PhpUnit(Php)等等。该测试框架的第一个和最杰出的 应用就是由 Erich gamma(《设计模式》的作者)和 Kent beck(XP ( Extreme Programming)的创始人)提供的开放源代码的 JUnit。 112 JUnit优点和 JUnit单元测试编写原则 优点: A、可以使测试代码与产品代码分开。 B、针对某一个类的测试代码通过较少的改动便可以应用于另一个 类的测试。 C、易于集成到测试人员的构建过程中,Jnit和Ant的结合可以实
1. JUnit 研究总结 1.1 JUnit 简介 1.1.1 单元测试 1.1.1.1 单元测试的好处 A、提高开发速度——测试是以自动化方式执行的,提升了测试代 码的执行效率。 B、提高软件代码质量——它使用小版本发布至集成,便于实现人 员除错。同时引入重构概念,让代码更干净和富有弹性。 C、提升系统的可信赖度——它是回归测试的一种。支持修复或更 正后的“再测试”,可确保代码的正确性。 1.1.1.2 单元测试的针对对象 A、面向过程的软件开发针对过程。 B、面向对象的软件开发针对对象。 C、可以做类测试,功能测试,接口测试(最常用于测试类中的方 法)。 1.1.1.3 单元测试工具和框架 目前的最流行的单元测试工具是 xUnit 系列框架,常用的根据语言 不同分为 JUnit(java),CppUnit(C++),DUnit (Delphi ),NUnit (.net),PhpUnit(Php )等等。该测试框架的第一个和最杰出的 应用就是由 Erich Gamma (《设计模式》的作者)和 Kent Beck(XP (Extreme Programming)的创始人 )提供的开放源代码的 JUnit。 1.1.2 JUnit 优点和 JUnit 单元测试编写原则 优点: A、可以使测试代码与产品代码分开。 B、针对某一个类的测试代码通过较少的改动便可以应用于另一个 类的测试。 C、易于集成到测试人员的构建过程中,JUnit 和 Ant 的结合可以实
施增量开发。 D、 JUnit是公开源代码的,可以进行二次开发。 C、可以方便地对Jnit进行扩展 编写原则: A、是简化测试的编写,这种简化包括测试框架的学习和实际测试 单元的编写 是使测试单元保持持久性 C、是可以利用既有的测试来编写相关的测试 113 JUnit的特征 A、使用断言方法判断期望值和实际值差异,返回 Boolean值。 测试驱动设备使用共同的初始化变量或者实例 C、测试包结构便于组织和集成运行。 支持图型交互模式和文本交互模式 114 JUnit框架与组成 A、对测试目标进行测试的方法与过程集合,可称为测试用例 B、测试用例的集合,可容纳多个测试用例( Testcase),将其称作测 试包( Testsuite) C、测试结果的描述与记录。( TestResult) D、测试过程中的事件监听者( TestListener) E、每一个测试方法所发生的与预期不一致状况的描述,称其测试 失败元素( TestFailure) F、 JUnit framework中的出错异常( Assertion Failed error)。 JUnit框架是一个典型的 Composite模式: TestSuite可以容纳任何派 生自Test的对象;当调用 Test Suite对象的run()方法是,会遍历自 己容纳的对象,逐个调用它们的run0)方法。(可参考《程序员》2003-6 期) 115JUnt的安装和配置 JUnit安装步骤分解 在htt:/ download. sourceforge. net/junt/中下载Jnit包并将Junt 压缩包解压到一个物理目录中(例如C:\Junt381)
施增量开发。 D、JUnit 是公开源代码的,可以进行二次开发。 C、可以方便地对 JUnit 进行扩展。 编写原则: A、是简化测试的编写,这种简化包括测试框架的学习和实际测试 单元的编写。 B、是使测试单元保持持久性。 C、是可以利用既有的测试来编写相关的测试。 1.1.3 JUnit 的特征 A、使用断言方法判断期望值和实际值差异,返回 Boolean 值。 B、测试驱动设备使用共同的初始化变量或者实例。 C、测试包结构便于组织和集成运行。 D、支持图型交互模式和文本交互模式。 1.1.4 JUnit 框架与组成 A、对测试目标进行测试的方法与过程集合,可称为测试用例 (TestCase)。 B、测试用例的集合,可容纳多个测试用例(TestCase),将其称作测 试包(TestSuite)。 C、测试结果的描述与记录。(TestResult) 。 D、测试过程中的事件监听者(TestListener)。 E、每一个测试方法所发生的与预期不一致状况的描述,称其测试 失败元素(TestFailure) F、JUnit Framework 中的出错异常(AssertionFailedError)。 JUnit 框架是一个典型的 Composite 模式:TestSuite 可以容纳任何派 生自 Test 的对象;当调用 TestSuite 对象的 run()方法是,会遍历自 己容纳的对象,逐个调用它们的 run()方法。(可参考《程序员》2003‐6 期)。 1.1.5 JUnit 的安装和配置 JUnit 安装步骤分解: 在 http://download.sourceforge.net/junit/中下载 JUnit 包并将 Junit 压缩包解压到一个物理目录中(例如 C:\Junit3.8.1)
记录 Junit. jar文件所在目录名(例如C:\Junt3.81 Junit jar)。 进入操作系统(以 Windows2000操作系统为准),按照次序点击“开 始设置控制面板 在控制面板选项中选择“系统”,点击“环境变量”,在“系统变量” 的“变量”列表框中选择“ CLASS-PATH”关键字(不区分大小写), 如果该关键字不存在则添加。 双击“ CLASS-PATH”关键字添加字符串“C:\ Junit3.81 Junta. jar”(注 意,如果已有别的字符串请在该字符串的字符结尾加上分号“;”), 这样确定修改后 Junit就可以在集成环境中应用了。 对于IDE环境,对于需要用到的 JUnit的项目增加到ib中,其设置 不同的IDE有不同的设置 12 JUnit架构分析 121接口分析 Test接口——运行测试和收集测试结果 Test接口使用了 Composite设计模式,是单独测试用例 ( Testcase),聚合测试模式( Testsuite)及测试扩展 ( TestDecorator)的共同接口。 它的 public int countTestCases()方法,它来统计这次测试有多 少个 Test case,另外一个方法就是 public void run Test Result), Test Result是实例接受测试结果,run方法执行 本次测试。 Test Case抽象类——定义测试中固定方法 Test case是Test接口的抽象实现,(不能被实例化,只能被继承) 其构造函数 Test Case(string name根据输入的测试名称name创建 个测试实例。由于每一个 Test case在创建时都要有一个名称, 若某测试失败了,便可识别出是哪个测试失败 TestCase类中包含的 setUp()、 tearDown(方法。 setUp(方法集中 初始化测试所需的所有变量和实例,并且在依次调用测试类中的 每个测试方法之前再次执行 setUp(方法。 tearDown()方法则是在 每个测试方法之后,释放测试程序方法中引用的变量和实例。 开发人员编写测试用例时,只需继承 TestCase,来完成run方法 即可,然后 JUnit获得测试用例,执行它的run方法,把测试结 果记录在 TestResult之中。 Assert静态类—系列断言方法的集合 Assert包含了一组静态的测试方法,用于期望值和实际值比对是 否正确,即测试失败, Assert类就会抛出一个 Assertion Failed error
记录 Junit.jar 文件所在目录名(例如 C:\Junit3.8.1\Junit.jar)。 进入操作系统(以 Windows2000 操作系统为准),按照次序点击“开 始 设置 控制面板”。 在控制面板选项中选择“系统”,点击“环境变量”,在“系统变量” 的“变量”列表框中选择“CLASS‐PATH”关键字(不区分大小写), 如果该关键字不存在则添加。 双击“CLASS‐PATH”关键字添加字符串“C:\Junit3.8.1\Junti.jar”(注 意,如果已有别的字符串请在该字符串的字符结尾加上分号“;”), 这样确定修改后 Junit 就可以在集成环境中应用了。 对于 IDE 环境,对于需要用到的 JUnit 的项目增加到 lib 中,其设置 不同的 IDE 有不同的设置 。 1.2 JUnit 架构分析 1.2.1 接口分析 Test 接口——运行测试和收集测试结果 Test 接口使用了 Composite 设计模式,是单独测试用例 (TestCase),聚合测试模式(TestSuite)及测试扩展 (TestDecorator)的共同接口。 它的 public int countTestCases()方法,它来统计这次测试有多 少个 TestCase,另外一个方法就是 public void run ( TestResult ),TestResult 是实例接受测试结果, run 方法执行 本次测试。 TestCase 抽象类——定义测试中固定方法 TestCase 是 Test 接口的抽象实现,(不能被实例化,只能被继承) 其构造函数TestCase(string name)根据输入的测试名称name创建 一个测试实例。由于每一个 TestCase 在创建时都要有一个名称, 若某测试失败了,便可识别出是哪个测试失败。 TestCase 类中包含的 setUp()、tearDown()方法。setUp()方法集中 初始化测试所需的所有变量和实例,并且在依次调用测试类中的 每个测试方法之前再次执行 setUp()方法。tearDown()方法则是在 每个测试方法之后,释放测试程序方法中引用的变量和实例。 开发人员编写测试用例时,只需继承 TestCase,来完成 run 方法 即可,然后 JUnit 获得测试用例,执行它的 run 方法,把测试结 果记录在 TestResult 之中。 Assert 静态类——一系列断言方法的集合 Assert 包含了一组静态的测试方法,用于期望值和实际值比对是 否正确,即测试失败,Assert 类就会抛出一个 AssertionFailedError