-单元测试框架-Junit

1.Junit注解

Junit3和junit4的区别 。 测试:白盒、黑盒测试,黑盒:很多时候都是黑盒,站在用户角度去使用功能,面向需求的方式,只要测功能怎么使用。

白盒测试:经过代码的方式来测试,测试逻辑、耗时、功能、等,拆开源码来测试,对里面的功能一个一个测试,一般由开发人员来测试。

Junit测试在企业中一般用的少,比较麻烦写测试用例,小型、中型项目一般【学Java,到凯哥学堂kaige123.com】黑盒测试、不测性能,只测试功能、使用。但是大型项目就一定要进行白盒测试,全方面测试,性能这些都要测试,耗时之类的都要测试。每个逻辑块都要测试性能,比如300ms之内要完成的,如果超过了,就不标准了。

严格的项目要写测试用例,每个功能都要写个测试用例去测试一下。

我们写逻辑代码来测试一下:junit测试可以分为很多条线路测试,一个方法就是一条线路,每条线路基本上是不会相关联的。比如你的前面的一条测试线路出错了,并不会影响到下一条线路的正常进行。

如上图所示,有两条线路,两个方法,线路1有异常不会影响线路2大的运行。

这是没有出错,就不会抛异常。

Junit里面有一个之前调用和之后调用@Before和@After,这就是之前调用和之后调用。怎么使用这两个东西?

之前调用可以用来提前创建需要测试的类的对象、打开相应的资源之类的,而之后调用可以用来销毁已经测试了的类的资源等。

如上图所示的代码,就是使用之前调用和之后调用。 要注意,不同的线路、方法不要互相调用,不要让它们产生互相关联,比如你的方法1里面调用方法2,万一测试的时候,其中一个方法出错了,就会影响另一个方法的调用了。

如果我们有两个测试类去测试一个逻辑类,我们可以两个测试类一起调用运行吗?

可以,要用到组合注解才可以让两个类一起运行:

上图是第二个测试类的代码,我们怎么把两个测试类组合合并起来一起运行呢?

首先,我们先创建一个类,然后使用合并注解@Runwith(Suite.class)@SuiteClasses({TestService.class,TestService2.class}),代码:

如上图,我们的两个测试类都被调用了。可以一次性把很多个测试类运行起来的组合测试。

另外,上面都是用来测试正确情况的,我们也要测一下出错的情况,@Test(expected=UserNameException)@Test(expected=PassWordException):

如上图,我们的两个方法,在给了错误用户名和错误密码后,成功的把对应的异常抛出来了,所以这连个测试用例应该是正确的。

expected是专门用来测试异常发生的,如果账户密码不对,要发生了才没有问题。

如上图所示,就是超时了,所以会报错,有些程序对程序的运行时间也是有要求的,如果你的程序没有在规定的时间内运行完成,说明程序是成功的 。 多方面都要考虑考虑,正确性、异常等、运行时间这些都应该测试一下。

Assert,无论junit3还是junit4都是有这个东西的。主要是用来判断逻辑值的。如方法:Assert.assertTrue(逻辑表达式),如果里面的表达式是true,则用junit test的时候是通过的,如果表达式是false,则会抛出异常,如:

结果如图,注意这里是failure而不是error,这就是逻辑错误了。也有Assert.assertFalse(逻辑表达式),这里是用来判断逻辑是不是false的,如果是false则junit test通过,如果是true则是failure了,如:

还有出错时可以写一句话的情况,如下:

还有比较数组是不是一样的逻辑比较,如下:

其中,这里的数组类型可以更换为其他类型的,同样是这种比较方法。

还有不相等比较:

还有判断不能为空的:

还有比较两个对象的内存地址的:

还有专门用来抛错误的fail(),如下:

以后我们验证代码的逻辑的时候,我们可以直接使用Assert类里面提供的各种各样的静态方法,就不用自己去写判断逻辑是否正确的代码了。

Junit3的里面的Assert也可以使用的,只要把测试类继承一下TestCase类就行了。

Hamcrest,这个jar包,也是一个框架,专门用来做逻辑匹配,非常灵活的。

可以联合多个条件一起判断,而assert只能判断一个条件。具体的使用方法,需要联合assertThat(actual,matcher)来进行使用。

还有一个allof必须全部都满足,就是括号里面的条件都满足才可以,如:

只要里面的endsWith不通过,那整个判断的结果就是错的,就会有failure

还有一个anyOf就是只要条件中只要有一个满足就能通过,只有两个都不满足时才会不通过:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 简介 测试 在软件开发中是一个很重要的方面,良好的测试可以在很大程度决定一个应用的命运。软件测试中,主要有3大种类...
    Whyn阅读 5,753评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,654评论 18 139
  • 1.初级篇 1.1 单元测试 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我...
    流川枫AI阅读 2,465评论 0 8
  • 我们写单元测试,一般都会用到一个或多个单元测试框架,在这里,我们介绍一下JUnit4这个测试框架。这是Java界用...
    邹小创阅读 5,703评论 3 33
  • 什么是单元测试 在计算机编程中,单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最...
    HelloCsl阅读 10,953评论 1 46