版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JUnit单元测试,1 JUnit简介,2 JUnit下载与配置,3 第一个JUnit单元测试,4 知识要点,1 JUnit简介,JUnit是一个开源的java单元测试框架。在1997年,由 Erich Gamma 和 Kent Beck 开发完成。正如常言道:“麻雀虽小,五脏俱全。” JUnit设计的非常小巧,但是功能却非常强大: (1)提供的API可以让用户写出测试结果明确的可重用单元测试用例。 (2)提供了三种方式来显示用户的测试结果,而且还可以扩展。 (3)提供了单元测试用例成批运行的功能。 (4)超轻量级而且使用简单,没有商业性的欺骗和无用的向导。 (5)整个框架设计良好,易扩展。
2、对不同性质的被测对象,如Class,Jsp,Servlet,Ejb等,JUnit有不同的使用技巧。本书中仅以Class测试为例。,2 JUnit下载与配置,由于Eclipse中集成了JUnit,所以不必下载,如果想要最新的JUnit类库可以在互联网上下载,之后在Eclipse构建路径中添加JUnit类库即可。下面介绍一下Eclipse中如何配置JUnit。 (1)右键单击项目“WebApplication”,选择“Build Path”“Configure Build Path”菜单命令,弹出构建路径对话框,选择“Libraries”选项,如图5-1所示。,图5-1 构建路径对话框,2 JUn
3、it下载与配置,(2)单击“Add External JARs”可以添加额外的JUnit类库。单击“Add Library”添加Eclipse中自带的JUnit类库,如图5-2所示。,图5-2 添加Eclipse中自带的JUnit类库,2 JUnit下载与配置,(3)选择“Junit”,单击“Next”按钮,出现添加类库对话框,在“JUnit library version”一栏中有“JUnit 3”和“JUnit 4”两个选项,本例中选择“JUnit 4”如图5-3所示。,图5-3 选择JUnit版本,2 JUnit下载与配置,(4)单击“Finish”按钮,完成JUnit类库的添加。如图5
4、-4所示,JUnit类库已经加入当前项目中了。,图5-4 完成JUnit类库添加,2 JUnit下载与配置,(5)单击“OK”按钮完成。此时在包资源管理器视图(Package Explorer)中可以看到JUnit类库信息,如图5-5所示。,图5-5 查看JUnit类库信息,3 第一个JUnit单元测试,5.3.1 编辑类文件 编辑类文件步骤如下。 (1)新建包com.myjunit.example。 (2)在包com.myjunit.example中新建一个JUnit测试类文件JUnitExample.java,该类中只有一个方法speak(),返回字符串“Hello World!”,代码如
5、下。 package com.myjunit.example; public class JUnitExample /待测试的方法,返回字符串“Hello World!” public String speak() return Hello World!; ,3.2 创建TestCase测试类,现在开发JUnit的“Hello World!”例子。 (1)建立测试。在“WebApplication”工程上单击右键,选择“New”“Other”菜单命令,展开“Java”选项,选择“JUnit”“JUnit Test Case”,如图5-6所示。,图5-6 新建JUnit Test Case测试类
6、,3.2 创建TestCase测试类,(2)单击“Next”按钮,弹出新建JUnit测试案例对话框。在“Name”一栏中填入测试案例的名字“TestGetHelloWorldPrompt”,在“Class under test”中填入将要被测试的类“com.myjunit.example.JUnitExample”。如图5-7所示。,图5-7 新建JUnit测试案例对话框,3.2 创建TestCase测试类,(3)单击“Next”按钮,弹出选择待测试方法对话框,选择“JUnitExample”类的“speak()”方法,单击“Finish”按钮完成。编辑“TestGetHelloWorldPr
7、ompt”类代码如下。 package com.myjunit.test; import junit.framework.TestCase; import com.myjunit.example.JUnitExample; public class TestGetHelloWorldPrompt extends TestCase public void setUp() throws Exception /初始化 public void tearDown() throws Exception /撤销初始化 public void testSpeak() /构造类JUnitExample的实例测试
8、 JUnitExample jue = new JUnitExample(); /assertEquals方法是JUnit提供的辅助函数,用于帮助确定某个被测试的函数是 /否正常工作,称为“断言”。assertEquals(expected,actual):expected是 /期望值,actual是被测试代码实际产生的值 assertEquals(Hello e!, jue.speak(); ,3.3 运行,右键单击工程“WebApplication”,选择“Run As”“JUnit Test”选项,出现JUnit视图,如图5-8所示。,图5-8 运行单元测试,3.3 运行,可以看到JUn
9、it视图中出现一个红条,“Failures”为1,说明测试失败了,查看失败原因可以在“Failure Trace”中查找信息。也可以单击“ ”查看。如图5-9所示,说明测试数据与实际数据不一致,导致测试失败。,图5-9 比较测试数据与实际数据,3.3 运行,下面,我们修改“TestGetHelloWorldPrompt”类中的“testSpeak”方法,代码如下。 public void testSpeak() /fail(Not yet implemented); JUnitExample jue = new JUnitExample(); assertEquals(Hello World!
10、, jue.speak(); ,3.3 运行,我们再次运行测试。JUnit视图中出现一个绿条,表明测试成功。如图5-10所示。,图5-10 运行成功界面,3.4 成批运行TestCase,新建一个“JUnit Test Suite”类,名称为“AllTests”,代码如下。 package com.myjunit.test; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class AllTests public static Test
11、 suite() /构造TestSuite类,可以不带参数 TestSuite suite = new TestSuite(Test for com.myjunit.test); /$JUnit-BEGIN$ /*此处可以添加多个JUnit test。本例中只是使用了前面的一个测试例子。运行 AllTests时就可以测试多个JUnit test,测试失败的JUnit test不会影 响其他的JUnit test测试*/ suite.addTestSuite(TestGetHelloWorldPrompt.class); /* suite.addTestSuite(其他测试类.class); *
12、/ /$JUnit-END$ return suite; ,3.4 成批运行TestCase,右键单击类“AllTests”,选择“Run As”“JUnit Test”菜单命令,结果如图5-11所示。,图5-11 成批运行单元测试,4 知识要点,1JUnit中的初始化与撤销 在“TestGetHelloWorldPrompt”类中,我们可以看到有setUp与tearDown两个方法,这两个方法是junit framework.TestCase中提供初始化和反初始化每个测试的方法。setUp方法:在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;tearDown方法:在每个测试方
13、法被调用之后被调用,负责撤销测试环境。它们与测试方法的关系可以描述如下: 测试开始setUptestXXXtearDown测试结束 在setUp和tearDown中的代码是不应该与测试方法相关的,而应该是全局相关的。例如对于测试方法A和B,在setUp和tearDown中的代码应该是A和B都需要的代码。,4 知识要点,2JUnit的各种断言 JUnit为我们提供了一些辅助函数,它们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言。下面我们来介绍一下JUnit的各种断言。 assertEquals 函数原型1:assertEquals(String messa
14、ge,expected,actual) 参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。 expected是期望值,通常都是用户指定的内容。 actual是被测试的代码返回的实际值。 函数原型2:assertEquals(String message,expected,actual,tolerance) 参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。 expected是期望值,通常都是用户指定的内容。 actual是被测试的代码返回的实际值。 tolerance是误差参数,参加比较的两个浮点数在这个误差之内则会被认为是 相等
15、的。,4 知识要点, assertTrue 函数原型:assertTrue (String message,Boolean condition) 参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。 condition是待验证的布尔型值。 该断言用来验证给定的布尔型值是否为真,如果结果为假,则验证失败。当然,还有验证为假的测试条件: 函数原型:assertFalse(String message,Boolean condition) 该断言用来验证给定的布尔型值是否为假,如果结果为真,则验证失败。 assertNull 函数原型:assertNull(String
16、 message,Object object) 参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。 object是待验证的对象。 该断言用来验证给定的对象是否为null,如果不为null,则验证失败。相应地,还存在可以验证非null的断言: 函数原型:assertNotNull(String message,Object object) 该断言用来验证给定的对象是否为非null,如果为null,则验证失败。,4 知识要点, assertSame 函数原型:assertSame (String message, expected,actual) 参数说明:mess
17、age是一个可选的消息,如果提供,将会在发生错误时报告这个消息。 expected是期望值。 actual是被测试的代码返回的实际值。 该断言用来验证expected参数和actual参数所引用的是否是同一个对象,如果不是,则验证失败。相应地,也存在验证不是同一个对象的断言: 函数原型:assertNotSame (String message, expected,actual) 该断言用来验证expected参数和actual参数所引用的是否是不同对象,如果所引用的对象相同,则验证失败。 Fail 函数原型:Fail(String message) 参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。 该断言会使测试立即失败,通常用在测试不能达到的分支上(如异常)。,4 知识要点,3建立测试案例的步骤 建立一个junit.framework.TestCase的实例。 定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026学年黑龙江省双鸭山市海林市二年级语文期末深度自测经典测试题详细参考解析详细答案和解析
- 2026云南大理南涧彝族自治县居民健康管理中心(医共体)招聘29人备考题库及完整答案详解一套
- 2026四川省农业科学院水产研究所(四川省水产研究所)科研助理招聘2人备考题库及1套完整答案详解
- 2026浙江省博物馆招聘编外人员的2人备考题库及完整答案详解一套
- 2026四川成都天府新区顾连禾泰康复医院招聘26人备考题库参考答案详解
- 2026年井冈山中学面向社会公开招聘食堂工作人员备考题库完整参考答案详解
- 2026广西南宁市青秀区南湖街道办事处招聘1人备考题库(劳务派遣)及参考答案详解一套
- 2026江西江投资本有限公司招聘16人备考题库(第1批次)及1套参考答案详解
- 2026年山东省寄生虫病防治研究所公开招聘博士研究生工作人员备考题库及一套参考答案详解
- 2026湖北宜昌市中心人民医院专业技术人员招聘11人备考题库(一)及完整答案详解1套
- 2026年教师职业能力测评题库及答案
- 2026江苏苏州工业园区综合执法系统招聘工作人员20人考试参考试题及答案解析
- 2025年福建省福州市八年级地理生物会考真题试卷(含答案)
- 半导体厂务项目工程管理 课件 项目1 任务1.1半导体厂务项目工程管理概述
- 2025重庆市消防救援总队机关及直属单位政府专职消防员招录113人(公共基础知识)综合能力测试题附答案解析
- 漂浮式海底锚桩施工方案
- DB11∕T 1448-2024 城市轨道交通工程资料管理规程
- JG/T 418-2013塑料模板
- 周共度版结构化学基础整合教案
- 胖东来企业文化指导手册
- 南昌大学HFSS工程应用仿真实验报告:18
评论
0/150
提交评论