全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/blog/static/98888660201121010474199/JUnit4 入门教程在JUnit 3中我们是怎样写一个单元测试的。比如下面一个类:public class AddOperation public int add(int x,int y) return x+y; 我们要测试add这个方法,我们写单元测试得这么写:import junit.framework.TestCase;import static org.junit.Assert.*;public class AddOperationTest extends TestCase public void testAdd() System.out.println(add); int x = 0; int y = 0; AddOperation instance = new AddOperation(); int expResult = 0; int result = instance.add(x, y); assertEquals(expResult, result); 注:可以看到上面的类使用了JDK5中的静态导入,这个相对来说就很简单,只要在import关键字后面加上static关键字,就可以把后面的类的static的变量和方法导入到这个类中,调用的时候和调用自己的方法没有任何区别。我们可以看到上面那个单元测试有一些比较霸道的地方,表现在:1.单元测试类必须继承自TestCase。2.要测试的方法必须以test开头。下面我们就演示一个在junit4下面的示例一个方法类:public class T public int add(int x, int y) return x + y;public int divide(int x, int y) return x/y;该方法的junit4测试类:import static org.hamcrest.Matchers.allOf;import static org.hamcrest.Matchers.greaterThan;import static org.hamcrest.Matchers.is;import static org.hamcrest.Matchers.lessThan;import static org.junit.Assert.assertThat;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;import com.bjsxt.junit4.T;public class TTest BeforeClasspublic static void beforeClass() System.out.println(beforeClass);AfterClasspublic static void afterClass() System.out.println(afterClass);Beforepublic void before() System.out.println(before);Testpublic void testAdd() int z = new T().add(5, 3); assertThat(z, is(8); assertThat(z, allOf(greaterThan(5), lessThan(10);Test(expected = java.lang.ArithmeticException.class, timeout = 100)public void tDivide() int z = new T().divide(8, 0);Afterpublic void after() System.out.println(after);运行结果显示绿条,控制台输出:beforeClassbeforeafterbeforeAfterafterClass注:当然很多情况下,不是所有的注解都会用到,一般只使用 Test注解就够了我们可以看到,采用Annotation的JUnit已经不会霸道的要求你必须继承自TestCase了,而且测试方法也不必以test开头了,只要以Test来描述即可。从上面的例子可以看到在JUnit 4中还引入了一些其他的元数据,下面一一介绍:Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次。After:使用了该元数据的方法在每个测试方法执行之后要执行一次。Test(expected=*.class)在JUnit4.0之前,对错误的测试,我们只能通过fail来产生一个错误,并在try块里面assertTrue(true)来测试。现在,通过Test元数据中的expected属性。expected属性的值是一个异常的类型Test(timeout=xxx):该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在制定的时间之内没有运行完,则测试也失败。ignore:该元数据标记的测试方法在测试中会被忽略。,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。另外JUnit4 放弃旧的断言,使用hamcrest断言Junit4下载地址:/projects/junit/files/junit/,这里面有很多版本,目前最新的是junit4.8.1 .Hamcrest下载地址:/p/hamcrest/downloads/list,最新的是1.3版本,下载一个Hamcrest all-in-one Jar的最新版本即可.JUnit4 中只使用assertThat方法足矣assertThat方法需要使用hamcrest的匹配方法:示例assertThat( n, allOf( greaterThan(1), lessThan(15) ) );assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );assertThat( n, anything() );assertThat( str, is( bjsxt ) );assertThat( str, not( bjxxt ) );assertThat( str, containsString( bjsxt ) );assertThat( str, endsWith(bjsxt ) ); assertThat( str, startsWith( bjsxt ) ); assertThat( n, equalTo( nExpected ) ); assertThat( str, equalToIgnoringCase( bjsxt ) ); assertThat( str, equalToIgnoringWhiteSpace( bjsxt ) );assertThat( d, closeTo( 3.0, 0.3 ) );assertThat( d, greaterThan(3.0) );assertThat( d, lessThan (10.0) );assertThat( d, greaterThanOrEqualTo (5.0) );assertThat( d, lessThanOrEqualTo (16.0) );assertThat( map, hasEntry( bjsxt, bjsxt ) );assertThat( iterable, hasItem ( bjsxt ) );assertThat( map, hasKey ( bjsxt ) );assertThat( map, hasValue ( bjsxt ) );Failure和ErrorFailure是指测试失败Error是指测试程序本身出错JUnit4 AnnotationTest: 测试方法(expected=XXException.class)(timeout=xxx)Ignore: 被忽略的测试方法Before: 每一个测试方法之前运行After: 每一个测试方法之后运行BeforeClass: 所有测试开始之前运行 /必须定义为static方法AfterClass: 所有测试结束之后运行 /必须定义为static方法运行多个测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 爱国议论文初中范文5
- 浅谈豫剧的基本概况与发展论文
- 2025年成本与提高经济效益的关系论文
- 汉语言毕业论文选题5范文
- 毕业论文评语大全简短
- 论文撰写的一般步骤
- 浅析SF6气体、氮气(N2)作为气体绝缘中压开关设备绝缘气体的优和-
- 论文读书报告怎么写
- 江西财经大学MBA研究生学位论文工作规定(修订稿)
- 文献综述开题报告的内容及格式要求 10000字
- 涉氨制冷企业检查表
- 医务人员职业暴露预防及处理课件
- 超市熟食操作管理制度
- 医院培训课件:《人文关怀与人文护理》
- 第三届南华大学医学生临床技能竞赛评分标准高处
- 2.1.2河流的堆积地貌课件高中地理人教版(2019)选择性必修1
- 《电力安全事故应急》课件
- 《国家综合性消防救援队伍队列条令(试行)》题库
- 【核心素养目标】粤教粤民版《劳动技术》六上 第7课《挂钩》课件
- DB36T 1593-2022 高速公路日常养护技术规范
- 电力配网投标技术文件
评论
0/150
提交评论