《2022年实验一JUnit测试框架的使用推荐 .pdf》由会员分享,可在线阅读,更多相关《2022年实验一JUnit测试框架的使用推荐 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验一 JUnit测试框架的使用( 4 学时)一、实验目的1、掌握 Junit 测试框架的使用2、掌握测试用例的编写二、基本知识1、熟悉 java 编程语言和Eclipse 集成开发环境2、熟悉单元测试概念3、熟悉测试设计技术三、实验环境windows 操作系统 +IE 浏览器Eclipse 集成开发环境 +Junit 测试框架四、实验内容1、学习 Junit框架的使用可通过以下两个示例进行学习。A、Junit 使用方法示例 1 1)把 Junit 引入当前项目库中新建一个Java 工程 coolJUnit ,打开项目coolJUnit 的属性页- 选择“ Java Build Path” 子
2、选项- 点选“Add Library , ” 按钮- 在弹出的“Add Library ” 对话框中选择JUnit(图 1) ,并在下一页中选择版本Junit 4 后点击“ Finish”按钮。这样便把JUnit 引入到当前项目库中了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 图 1 为项目添加JUnit 库2)新建单元测试代码目录单元测试代码是不会出现在最终软件产品中的,所以最好为单元测试代码与被测试代码创建单独的目录
3、, 并保证测试代码和被测试代码使用相同的包名。这样既保证了代码的分离,同时还保证了查找的方便。遵照这条原则,在项目coolJUnit 根目录下添加一个新目录testsrc,并把它加入到项目源代码目录中。(见 图 2、3) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 图 2 新建测试代码目录图 3 添加测试代码目录3)在工程中添加类添加类 SampleCaculator,类中有两个方法,分别计算加减法。编译代码。4)写单元
4、测试代码为类 SampleCalculator添加测试用例。在资源管理器SampleCalculator.java文件处右击选 new 选Junit Test Case(见图 4),Source foler选择 testsrc目录, 点击 next,选择要测试的方法,这里把add 和subtration方法都选上,最后点finish完成。package cn.edu.gzhu; publicclass SampleCalculator /计算两整数之和publicint add(int augend, int addend) return augend + addend; /计算两整数之差pu
5、blicint subtration(int minuend, int subtrahend) return minuend - subtrahend; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 图4 新建测试用例Junit自动生成测试类SampleCalculatorTest,修改其中的代码(如下)。其中 assertEquals断言,用来测试预期目标和实际结果是否相等。assertEquals( Sting mess
6、age, expected, actual ) expected是期望值 (通常都是硬编码的),actual是被测试代码实际产生的值,message是一个可选的消息,如果提供的话,将会在发生错误时报告这个消息。如想用断言来比较浮点数(在Java 中是类型为 float或者 double的数),则需指定一个额外的误差参数。assertEquals(Sting message, expected, actual, tolerance) 其它断言参见课本和参考书介绍。测试方法需要按照一定的规范书写:1. 测试方法必须使用注解 org.junit.Test 修饰。2. 测试方法必须使用 public
7、void 修饰,而且不能带有任何参数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 5)查看运行结果在测试类上点击右键,在弹出菜单中选择 Run As JUnit Test。运行结果如下图,绿色的进度条提示我们,测试运行通过了。图5 示例 1运行结果B、Junit 使用方法示例 2 1)在工程中添加类类 WordDealUtil 中的方法 wordFormat4DB( ) 实现的功能见文件注释。package cn.edu.
8、gzhu; importstatic org.junit.Assert.*; import org.junit.Test; publicclass SampleCalculatorTest SampleCalculator calculator = new SampleCalculator(); Testpublicvoid testAdd() int result = calculator.add(50, 20); assertEquals(70,result); Testpublicvoid testSubtration() int result = calculator.subtrati
9、on(50, 20); assertEquals(30,result); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - package cn.edu.gzhu; package cn.edu.gzhu; import java.util.regex.Matcher; import java.util.regex.Pattern; publicclass WordDealUtil /*将Java 对象名称(每个单词的头字母大写
10、)按照*数据库命名的习惯进行格式化*格式化后的数据为小写字母,并且使用下划线分割命名单词*例如: employeeInfo经过格式化之后变为employee_info*paramnameJava 对象名称*/publicstatic String wordFormat4DB(String name) Pattern p = Ppile( A-Z); Matcher m = p.matcher(name); StringBuffer strBuffer = new StringBuffer(); while(m.find() /将当前匹配子串替换为指定字符串,/并且将替换后的子串以及其之前到上次
11、匹配子串之后的字符串段添加到一个 StringBuffer对象里m.appendReplacement(strBuffer, _+m.group(); /将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里return m.appendTail(strBuffer).toString().toLowerCase(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - 2)写单元测试代码3)进一步完善测试用例单
12、元测试的范围要全面,如对边界值、正常值、错误值的测试。运用所学的测试用例的设计方法,如:等价类划分法、边界值分析法,对测试用例进行进一步完善。继续补充一些对特殊情况的测试:/测试 null 时的处理情况Testpublicvoid wordFormat4DBNull() String target = null; String result = WordDealUtil.wordFormat4DB(target); assertNull(result); /测试空字符串的处理情况Testpublicvoid wordFormat4DBEmpty() String target = ; Stri
13、ng result = WordDealUtil.wordFormat4DB(target); assertEquals( , result); /测试当首字母大写时的情况Testpublicvoid wordFormat4DBegin() String target = EmployeeInfo; String result = WordDealUtil.wordFormat4DB(target); assertEquals( employee_info, result); package cn.edu.gzhu; importstatic org.junit.Assert.*; impor
14、t org.junit.Test; publicclass WordDealUtilTest Testpublicvoid testWordFormat4DB() String target = employeeInfo; String result = WordDealUtil.wordFormat4DB(target); assertEquals( employee_info, result); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - -
15、 - - - - - /测试当尾字母为大写时的情况Testpublicvoid wordFormat4DBEnd() String target = employeeInfoA; String result = WordDealUtil.wordFormat4DB(target); assertEquals( employee_info_a, result); /测试多个相连字母大写时的情况Testpublicvoid wordFormat4DBTogether() String target = employeeAInfo; String result = WordDealUtil.word
16、Format4DB(target); assertEquals( employee_a_info, result); 4)查看分析运行结果,修改错误代码再次运行测试。 JUnit 运行界面提示我们有两个测试情况未通过测试(见图 6) ,当首字母大写时得到的处理结果与预期的有偏差,造成测试失败(failure ) ;而当测试对null 的处理结果时,则直接抛出了异常测试错误(error) 。显然,被测试代码中并没有对首字母大写和null 这两种特殊情况进行处理,修改如下:/修改后的方法wordFormat4DB public static String wordFormat4DB(String
17、name) if(name = null) return null; Pattern p = Ppile(A-Z); Matcher m = p.matcher(name); StringBuffer sb = new StringBuffer(); while(m.find() if(m.start() != 0) m.appendReplacement(sb, (_+m.group().toLowerCase(); return m.appendTail(sb).toString().toLowerCase(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
18、 - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 图 6 示例 2 运行结果2、使用 Junit框架对类 Date 和类 DateUtil (参见附录)进行单元测试。只对包含业务逻辑的方法进行测试,包括:类 Date 中的isDayValid(int year, int month, int day) isMonthValid(int month) isYearValid(int year) 类 DateUtil 中的isLeapYear(int year) getDayofYear(Date date
19、) 要求设计合理测试用例,用Junit 进行测试,分析测试结果,并对错误代码进行修改。3、(选做)使用 Junit框架对给出的工程进行单元测试。该工程应用SSH 框架实现。必须测试的类:javaMax.Customer.Service.Impl 包中类 LoginCheck.java 类 Register.java 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - javaMax.SystemAdmin.Service.Impl包中的类 InternalUserManagement.java 要求设计合理测试用例,用Junit 进行测试,分析测试结果,并对错误代码进行修改。五、实验要求1、做好实验预习,掌握并熟悉本实验中所使用的测试环境及相应的测试软件。2、写出实验报告,内容包括: 实验目的 实验环境完成实验内容2: 给出测试用例 分析测试结果 给出改进后的代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -
限制150内