Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试

上传人:E**** 文档编号:89155619 上传时间:2019-05-19 格式:PPT 页数:30 大小:7.56MB
返回 下载 相关 举报
Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试_第1页
第1页 / 共30页
Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试_第2页
第2页 / 共30页
Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试_第3页
第3页 / 共30页
Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试_第4页
第4页 / 共30页
Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试》由会员分享,可在线阅读,更多相关《Java Web设计实用教程——基于Eclipse环境的应用开发 教学课件 ppt 作者 孔昊 PPT chap8 JUnit单元测试(30页珍藏版)》请在金锄头文库上搜索。

1、Java Web设计实用教程 主 编:孔 昊 副主编:卢 霞 机械工业出版社,关于JUnit,JUnit测试案例,知 识 点,编写和运行JUnit测试,关于JUnit,无论事先考虑多么周全,实际开发应用程序时总会或多或少发生一些错误,所以在开发阶段必须要对各种情况进行全面性的测试,避免运行时期错误发生。 JUnit是一个开源的单元测试框架,其任务是针对一个特定功能编写测试用例并进行测试。,关于JUnit,TDD(Test-Driven Development,测试驱动开发),是一种先定义测试代码,然后实现程序功能的开发过程。,一、测试驱动开发,测试驱动开发的特点: 在打算添加某项新功能时,先不

2、要着急写程序代码,而是为未来要写的代码先写一段测试用例; 然后编写、修改代码,直到代码符合测试用例的要求。 测试用例能够百分之百地正确运行,此时说明刚添加的功能通过了单元测试,至少在单元代码一级上已经确实没有问题了。,关于JUnit,二、JUnit插件,Eclipse中包括了一个将JUnit集成到Java IDE中的插件, 通过“帮助”“Eclipse SDK”“插件详细信息”可以看到Eclipse自带的JUnit插件。, 查看Eclipse中自带的JUnit插件,关于JUnit,Eclipse 3.2中带有两个版本的JUnit:JUnit 3.8.1和JUnit 4.1,下图描述了Eclip

3、se提供的两种JUnit库版本。版本下方的“当前位置”指出了它们对应jar包的位置,可以看出来自于Eclipse的安装目录。, 安装JUnit插件,关于JUnit,Step 1:下载JUnit,得到一个zip文件; Step 2: 解压这个zip文件到本地磁盘,存放到Eclipse安装目录的plugins子目录下; Step 3: 测试JUnit自带的测试组件。,编写和运行JUnit测试,一、JUnit 4.0+应用中的特性,在编写测试用例的时候,JUnit 4.0+为开发人员提供了一些新特性,能够使编写测试用例更加简单和方便。, 注释(Annotation),Test public void

4、 testAdd() assertEquals(3, math.add(1, 2); ,由于JUnit 4.0+是基于JDK 5.0平台,因此提供了注释功能,用于简化测试用例。下面的例子中,在测试方法testAdd()前面加上Test标注,在执行JUnit测试的时候会自动执行这个方法。,编写和运行JUnit测试, 断言(Assert),public class HelloWorld public static void main(String args) method(null); private static void method(String str) assert str != nul

5、l; System.out.println(str); 方法method()对参数str做了不等于null的检查,断言用于开发过程中的检查测试。,编写和运行JUnit测试, 预设环境(Fixture),在执行测试的时候,JUnit会提供以下两类方法协助测试: 分别使用setUp()和tearDown()方法完成环境的初始化和清理工作,并且执行的顺序是:setUp()测试方法tearDown()。 分别使用setUpBeforeClass()和tearDownAfterClass()方法在每个测试用例中分配和释放只需一次的昂贵资源。 JUnit提供了Before、BeforeClass、Afte

6、r和AfterClass标注来完成这些工作。,编写和运行JUnit测试, 忽略测试,用Ignore注解某个测试方法,使测试用例在运行时忽略该方法。 执行测试用例时,遇到Ignore标注,便不再执行testAdd()方法。也可以把Ignore 标注放到Test的后面。,Ignore(“使测试无故障通过,暂时不考虑与错误值的对比“) Test public void testAdd() assertEquals(5, math.add(-1, 4); ,编写和运行JUnit测试, Test参数,Test除了可以简单标示测试方法外,还有两个可选的 参数实现特殊功能,它们分别是expected和tim

7、eout。 expected参数 timeout参数,Test(expected = ArithmeticException.class) public void testZero() int x = 15 / 0; 实践证明: 运行完第3行时,确实抛出了ArithmeticException异常,因此测试用例执行通过。,编写和运行JUnit测试,Test(timeout = 2000) public void testTime() for (int i = 0; i+) ,timeout参数用来指定被Test注解的测试方法的最长运行时间。如果超过这个时间,则认为测试方法是失败的。,编写和运行

8、JUnit测试,二、编写测试用例,按照TDD的开发原则:先给将要编写的代码写一段测试用例,然后再编写、修改代码,直到代码符合测试用例的要求。,例题:对“冒泡法排序”做测试,具体步骤如下:,Step 1: 建立一个名为JUnitSample的项目,且“项目布局”选择第二项 。,编写和运行JUnit测试,选中JUnitSample项目,配置其“构建路径”中的“源代码”选项卡,使结果如下:,这样做的好处有两点: 测试类与被测试类单独存放,且具有相同的包名:同包的测试类可以被访问,同时方便定位被测试的类。 测试类和被测试类的字节码分开,便于以后对项目进行打包和发布。,编写和运行JUnit测试,Step

9、 2: 建立单元测试用例,并将JUnit jar包导入构建路径,结果如下:,编写和运行JUnit测试,Step 3: 补充测试用例,private static Sort sort = new Sort(); Test public void testGetSort() System.out.println(“执行测试方法testGetSort()“); int a = 1, 3, 5, 7, 9 ; int b = 9, 7, 5, 3, 1 ; String str1 = Arrays.toString(a); String str2 = sort.getSort(b); assertEq

10、uals(str1, str2); ,编写和运行JUnit测试,Step 4: 创建被测试类Sort.java,并补充代码,public String getSort(int a) int i, number, temp; for (number = 1; number ai + 1) temp = ai; ai = ai + 1; ai + 1 = temp; return Arrays.toString(a); ,编写和运行JUnit测试,三、运行测试用例,选择要运行的文件SortTest.java,右击鼠标,在上下文菜单中选择“运行方式”“JUnit测试”,即可运行这个测试用例,运行测试

11、时,如果选择的是项目、包或者测试文件,则项目、包或者测试文件中的所有测试用例都将被测试;如果只需要做单个测试,则只选择这个方法,再运行JUnit测试。,编写和运行JUnit测试,四、调试测试用例,当测试发生故障时,可以在Eclipse中利用调试手段定位错误,从而发现是测试用例的编写错误还是被测方法的错误,调试步骤和方法与应用程序的调试是一样的。,例题:调试“冒泡法排序”测试用例:,Step 1: 为了看清测试用例和被测程序的执行过程,在两个文件中加入断点。,编写和运行JUnit测试,Step 2: 调试运行测试用例, 点击“继续”按钮或“单步跳过”按钮,观察程序的执行过程。,编写和运行JUni

12、t测试,Step 3: 执行“单步跳入”按钮,程序进入到getSort()方法里,再点击“继续”按钮,程序执行完排序,在返回语句停下来,观察排序结果。,点击“继续”按钮,程序执行并在tearDown()方法中停下来。继续运行后,程序顺利结束,测试通过。,JUnit测试案例,一、异常测试, 问题描述,如果需要检查某个方法是否能够如预期的那样抛出特定的异常,不妨编写一个专用的测试方法。不过,测试程序代码必须能够判断被抛出的异常是否正确。如果被抛出的异常与预期的不符,那么测试结果为失败。,JUnit测试案例, 创建测试,被测试文件ReadData.java,源代码如下:,public class R

13、eadData public void getData(String str) throws FileNotFoundException String string; StringBuffer temp = new StringBuffer(); RandomAccessFile access = new RandomAccessFile(str, “r“); try while (string = access.readLine() != null) temp.append(string); catch (IOException e) e.printStackTrace(); System.

14、out.println(temp); ,JUnit测试案例,测试方法testGetData()的代码如下:,public void testGetData() ReadData rd = new ReadData(); try rd.getData(“beauty“); fail(“failed: getData() did not throw FileNotFoundException.“); catch (FileNotFoundException e) System.out.println(“ReadData.getData() throws successfully: “ + e.to

15、String(); ,测试的思路是: 如果参数指定的文件不存在或者打不开参数指定的文件,测试方法会捕捉到这个异常,即执行catch块中的语句。 如果被测方法没有抛出异常,程序则返回到try块中的第2条语句,接着输出抛出异常失败的信息。,JUnit测试案例, 运行测试,给定一个不存在的文件名,运行测试用例,结果如下:,给定一个存在的文件名,运行测试用例,结果如下:,JUnit测试案例,二、字符串截取测试, 问题描述,从Date类得到当前日期,应用程序的显示结果如下:,由于从Calendar类得到当前日期非常简单,所以可以先借助它创建一个测试类,然后再编程从Date类得到当前日期,通过测试使得被测类编写成功,这符合TDD的开发思想。,JUnit测试案例, 创建测试,建立测试用例DispDateTest.java和被测类DispDate.java的代码,代码参考教材。 测试的思路是: 通过Calendar类得到当前日期,如:2011-1-04(构造成字符串形式),再用这个结果和被测试类得到的日期字符串进行比较,通过运行测试,看结果如何。 如果测试失败,可以通过调试手段找出错误原因。,JUnit测试案例, 运行测试,由于给出的DispDate.java代码完全正确,所以运行后,测试通过。,本章课程结束,谢谢!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号