收藏 分享(赏)

软件测试实验-JUnit单元测试.doc

上传人:cjc2202537 文档编号:5292133 上传时间:2019-02-18 格式:DOC 页数:17 大小:815KB
下载 相关 举报
软件测试实验-JUnit单元测试.doc_第1页
第1页 / 共17页
软件测试实验-JUnit单元测试.doc_第2页
第2页 / 共17页
软件测试实验-JUnit单元测试.doc_第3页
第3页 / 共17页
软件测试实验-JUnit单元测试.doc_第4页
第4页 / 共17页
软件测试实验-JUnit单元测试.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、第三章 JUnit 单元测试实验 1 开始使用 JUnit【实验目的】1、 学习使用 JUnit4.X 进行单元测试; 2、 掌握 JUnit4.X 编写测试代码的方法;3、 应用 JUnit 进行单元测试,掌握最佳实践编写测试代码。【实验环境】1、 Windows 环境,MyEclipse 或 Eclipse,JUnit4.x 。2、 每个学生操作 1 台电脑。【实验原理】JUnit 是一个开源的 Java 编程语言的单元测试框架,最初由 Erich Gamma 和 Kent Beck 编写。Junit 测试是一种白盒测试工具。JUnit 是一套框架,继承 TestCase 类,就可以用Ju

2、nit 进行自动测试了。具有 JUnit 经验对于应用“测试驱动开发( TDD) ”的程序开发模型是非常重要的。JUnit 本质上是一套框架,即开发者制定了一套条条框框,遵循这此条条框框要求编写测试代码,如继承某个类,实现某个接口,就可以用 JUnit 进行自动测试了。由于 JUnit 相对独立于所编写的代码,可以测试代码的编写可以先于实现代码的编写,XP 中推崇的 test first design 的实现有了现成的手段:用 JUnit 写测试代码,写实现代码,运行测试,测试失败,修改实现代码,再运行测试,直到测试成功。以后对代码的修改和优化,运行测试成功,则修改成功。Java 下的 tea

3、m 开发,采用 cvs(版本控制) + ant(项目管理) + JUnit (集成测试) 的模式时,通过对 ant 的配置,可以很简单地实现测试自动化。【实验内容】根据下面的实验步骤完成实验。1、 JUnit 包下载。(1) 从 http:/www.junit.org 下载 Junit,打开该链接,会有一个下载链接,下载Junit4.X.zip,保存在用户机的文件系统中。(2) 解包 Junit-4.X,得到如图 3-1 的解包文件。图 1 Junit 解包文件表 1 Junit 文件说明文件/目录 描 述junit.jar JUnit 框架结构、扩展和测试运行器的二进制发布src.jar J

4、Unit 的源代码,包括一个 Ant 的 buildfile 文件junit 是个目录,内有 JUnit 自带的用 JUnit 编写的测试示例程序javadoc JUnit 完整的 API 文档doc 一些文档和文章,包括“Test Infected: Programmers Love Writing Tests”和其它一些资料,可以帮助我们入门。(3) 配置(以 JUnit4.8.2 为例)。步骤如下: 右击“我的电脑”-“属性”-高级-环境变量; 在系统变量中选择“CLASSPATH”(如果没有则新建一个,变量名 CLASSPATH,变量值 d: junit4.8.2junit-4.8.2

5、.jar;d:junit4.8.2); 如果有 CLASSPATH,将 d:junit4.8.2junit-4.8.2.jar;d:junit4.8.2 加入到变量值即可,多个中间需用;隔开。图 2 Junit 配置成功(4) 检验:运行中输入 cmd输入命令:java org.junit.runner.JUnitCore org.junit.tests.AllTests配置成功,如图 2 所示。2、 编写 JUnit 测试用例。使用 JUnit 的最佳实践:(1) 新建一个名为 test 的 source folder,用于存放测试类源代码;(2) 目标类与测试类应该位于同一个包下面,这样测

6、试类中就不必导入源代码所在的包,因为他们位于同一个包下面;(3) 测试类的命名规则:假如目标类是 Calculator,那么测试类应该命名为TestCalculator 或者是 CalculatorTest。下面将以一个具体的实例进行说明。(1) 新建一 Java Project。图 3 新建 Java Project(2) 配置构建路径。图 4 配置构建路径(3) Add Library-JUnit 4。图 5 Add Library图 6 选择 JUnit 4(1)图 7 选择 JUnit 4(2)(4) 建一个包 com.test 并在此包下建一个除法类: Divide。图 8 类 Di

7、videDivide 类的程序源代码如下所示:package com.test;public class Divide private static int result;public void divide(int num)result/=num;public int getResult()return result;public void setResult(int result)Divide.result=result;代码编写完成后,进行调试编译,确保没有语法错误。(5) 右键 Divide 类。图 9 新建 JUnit Test Case(1)图 10 新建 JUnit Test C

8、ase(2)图 11 新建 JUnit Test Case(3)MyEclipse 会自动为测试类取名:被测试类+Test ,单击 Next 就可以了。根据图 12选择需要进行测试的方法。注意:测试类之所以使用“Test”开头或“Test”结尾,是为了更好的区分测试类与被测试类。图 12 选择需要测试的方法(6) 创建测试用例。首先创建一个默认的测试用例。图 13 产生默认的测试用例(7) 执行测试用例。如图 14 所示。测试结果:红色,测试失败。图 14 运行测试用例图 15 测试结果所有类测试结果(8) 修改测试用例:DivideTest.java 。具体代码如图 16 所示。新测试用例运

9、行后的测试结果如图 17 所示。注意:测试方法必须使用注解 org.junit.Test 修饰。 测试方法必须使用 public void 修饰,而且不能带有任何参数。测试方法在 JUnit4.X 中没有要求,但是为了使得命名意义,一般推荐采用“test”+“被测试方法”的命名规则。assertEquals 是由 JUnit 提供的一系列判断测试结果是否正确的静态断言方法(位于类 org.junit.Assert 中)之一,我们使用它将执行结果 result 和预期值“result” 进行比较,来判断测试是否成功。图 16 修改后的测试用例图 17 修改后的测试用例的测试结果绿色的进度条提示我

10、们,测试运行通过了。但现在就宣布代码通过了单元测试还为时过早。记住:你的单元测试代码不是用来证明你是对的,而是为了证明你没有错。因此单元测试的范围要全面,比如对边界值、正常值、错误值得测试;对代码可能出现的问题要全面预测,而这也正是需求分析、详细设计环节中要考虑的。3、 应用 JUnit 对类 WordDealUtil 编写测试代码。(1) 被测试程序说明:对名称、地址等字符串格式的内容进行格式检查。将 Java 对象名称(每个单词的头字母大写)按照数据库命名的习惯进行格式化格式化后的数据为小写字母,并且使用下划线分割命名单词。import java.util.regex.Matcher;im

11、port java.util.regex.Pattern;/* 对名称、地址等字符串格式的内容进行格式检查* 或者格式化的工具类*/public class WordDealUtil /* 将 Java 对象名称(每个单词的头字母大写)按照* 数据库命名的习惯进行格式化* 格式化后的数据为小写字母,并且使用下划线分割命名单词* 例如:employeeInfo 经过格式化之后变为 employee_info* param name Java 对象名称*/public static String wordFormat4DB(String name)Pattern p = Ppile(“A-Z“);

12、Matcher m = p.matcher(name);StringBuffer sb = new StringBuffer();while(m.find()m.appendReplacement(sb, “_“+m.group();return m.appendTail(sb).toString().toLowerCase();(2) 添加测试代码。import static org.junit.Assert.assertEquals;import org.junit.Test;public class TestWordDealUtil /测试 wordFormat4DB 正常运行的情况Te

13、st public void wordFormat4DBNormal()String target = “employeeInfo“;String result = WordDealUtil.wordFormat4DB(target);assertEquals(“employee_info“, result);推荐每编写完一个测试方法,则执行”run”,看测试结果,结果应该是通过的。测试结果通过:(3) 继续添加测试代码,并运行看测试结果。public class TestWordDealUtil /测试 null 时的处理情况Test public void wordFormat4DBNul

14、l()String target = null;String result = WordDealUtil.wordFormat4DB(target);assertNull(result);/测试空字符串的处理情况Test public void wordFormat4DBEmpty()String target = “;String result = WordDealUtil.wordFormat4DB(target);assertEquals(“, result);/测试当首字母大写时的情况Test public void wordFormat4DBegin()String target =

15、 “EmployeeInfo“;String result = WordDealUtil.wordFormat4DB(target);assertEquals(“employee_info“, result);/测试当尾字母为大写时的情况Test public void wordFormat4DBEnd()String target = “employeeInfoA“;String result = WordDealUtil.wordFormat4DB(target);assertEquals(“employee_info_a“, result);/测试多个相连字母大写时的情况Test pub

16、lic void wordFormat4DBTogether()String target = “employeeAInfo“;String result = WordDealUtil.wordFormat4DB(target);assertEquals(“employee_a_info“, result);再次运行测试。很遗憾,JUnit 运行界面提示我们有两个测试情况未通过测试 当首字母大写时得到的处理结果与预期的有偏差,造成测试失败(failure) ;而当测试对 null 的处理结果时,则直接抛出了异常 测试错误(error ) 。显然,被测试代码中并没有对首字母大写和 null 这两种特殊情况进行处理。图 18 JUnit 测试运行结果(4) 修改测试代码,直到测试通过。修改以后的代码:测试结果:【实验小结】通过本次实验掌握了 Junit 单元测试的环境配置,以及基本操作步骤,学习到了 JInit 单元测试的作用以及如何修改错误,对以后进行软件测试方面收获非常大。经过这次理论学习,明白了要求掌握的知识对于我今后的作用。这让我明确了以后学习的目标,在不断学习软件编程的同时,也应该继续软件测试的深入学习。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 中学实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报