JavaEE——Junit

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

Junit

Junit又名单元测试,Junit是用来测试Java代码的,使用Junit测试有什么特别的地方吗?Junit的好处之一,落实在单元两字上。可以对单元进行全方位测试。

什么是单元?单元就是模块。

单元小一点可以指一个类,一个类完成一件事件。

单元在小一点,可以指一个类中的方法。一个方法完成一个功能,多个方法组成一个类。

我们要对这一个个单元,一个个模块进行全方位测试,我们就可以使用Junit。Junit提供了这样的功能:分块全方位测试。

例:

这里有一个方法,给年龄赋值。先判断年龄是否符合要求,如果不符合,则抛出异常。如果符合则赋值给年龄。

使用Junit对前面写的年龄方法进行测试

@Test注解,告诉别人我这是一个测试用例,待会给我运行这个测试用例

因为一个方法写在类中,又不是main方法,光一个方法是不会被运行的。写上@Test表示这个Junit测试用例。注解配置描述着:这是一个测试用例,待会会来调用此注解下的方法

在第一个测试用例中,我们setAge传入年龄10,这是正常的年龄是不会有错误的。

在第二个测试用例中,我们@Test(expected)表示这个用例会抛出如下错误,如果有抛出我指定的错误,表示测试是通过。如果没有抛错或是抛错但不是我的这个错误,表示测试不通过

在这里就进行了2种测试。一个是正常情况下是否正确,一个是测试参数非法下是否会抛出异常。抛出指定的才通过,否则不通过。

运行结果如下:

运行了2个测试用例,都执行成功

如果我将测试抛出异常的方法改为10,年龄正常下,就不抛异常,再看测试用例:

改为10:

出现了警告,表示这个用例指定的异常没有被抛出。需要抛出异常,才表示正常通过。因为这个用例就是用来测试异常是否被抛出的。

当点击类上的运行,是这个测试类下的所有用例全部运行起来,如之前

当点击某一个用例的运行,表示只单独运行这一个用例如左下角

这就是全方面测试体现之一:可以对某一个方法,单独拎出来测试。可以对某一个方法,测试他正常运行,还测试他非法访问。不仅测正确,还要测错误。

如果没有用Junit,我们就只能是写一个类,main方法调用进行测试。这样有点不合适,并且测起来也麻烦,使用Junit就可以避免这种问题

在@Test注解,有2个参数可以选填

一个是expected,一个是timeout。一个设置方法会抛出异常,一个设置方法执行时间。

查看这个expected,是Class<? extends Trowable>,要求Class并且继承要异常,可以测异常 Timeout是设置这个方法执行的时间,当超过这个时间,表示这个方法超时了,可以做优化

Junit还提供了什么呢?

我们这里有一个MyArrayList类,我们打算测试这个类:

这里有这样一个注解@BeforeClass

@BeforeClass这个注解的意思是,在运行整个Junit之前,先调用这个方法。等同于初始化 还有这个注解@AfterClass,在运行完毕整个Junit后,调用这个注解下的方法,等同于destroy 还有@Before每次调用Junit案例前,先执行我这个方法 还有@After每次调用完Junit案例后,先执行我这个方法

这里的区别是: @BeforeClass与@AfterClass是在运行Junit框架前后调用,只会调用一次 @Before与@After是在调用用例前后调用,有多少个用例调用多少次

我们什么静态的集合属性,我们这里使用@BeforeClass注解,在执行整个Junit用例开始前,先给集合注入数据,在后面的测试就可以使用集合,就不用填充数据了。

@BeforeClass需要是静态的方法,因为在整个执行前先调用,可能是拿类.方法调用。保证方法先被执行。

测试一:

进入Junit调用@BeforeClass注入数据。我们这里addMyArrayList测试: 第0个数据是否是嘻嘻哈哈,第1个数据是否是哈哈嘻嘻,第2个数据是否是哈哈哈哈

Assert Junit提供的操作类,翻译:断言。这个操作类有什么用处呢?它的方法替代我们的一些操作。比如这里判断前后和后面的对象是否一样。就是解决这种事情的。如果符合则表示通过,如果不符合就报错。断言,断论是否OK

Assert提供的方法都是静态的方法:

引入静态包,*将Assert下的静态方法全部引入。

静态引包好处是,之前调用:Assert.assertEquals()。现在调用:assertEquals()

判断删除:

删除第二个,则就删掉了最后一个哈哈哈哈。assertNull判断第二个是否为null

在添加一个进入,第二个不为null。assertNotNull判断第二个是否不为null

assertEquals判断第一个对象与第二个对象是否一致

删除第一个,那么就由0 1 2变成0 2。那么2为1,则就是哈哈哈哈为1,哈哈嘻嘻被删除。assertEquals判断第二个是否是哈哈哈哈

判断下标越界:

测试参数错误,是否为抛出越界错误

判断修改

判断修改的地方是否是我们预期的值

这就是Junit测试,对业务块全方位测试。

@Test提供多方面测试。提供的Assert断言减轻了我们以前测试麻烦。

@Ignore

要测试的用例:

对方法进行测试,按照往常,这样的一测试就报错,因为里面有抛错,Junit也没有指定逻辑会抛出错误

查看测试:

对于这个用例,上面划上了蜂窝的图标。也没有报错。为什么会这样呢? 这就是@Ignore的作用了,ignore翻译:忽略。这个注解的意思是:忽略这个用例不执行。所以没报错,因为根本没有执行这个用例,这就是@Ignore的作用,忽略测试用例

@Runwith

这个注解在Spring-TestContext对Spring测试时,会使用到这个注解。在使用Spring测试时有2个注解,一个是@Runwith一个是ContextConfiguration。

@ContextConfiguration的意思是指定application.xml Spring配置文件在哪里,那@Runwith是意思是?

这个注解的意思猜测是运行之前启动这个类。什么意思呢?启动@Runwith指定的类,这样Spring书写的test类就启动了,这样这个test类就会帮我们构建Spring环境。这样我们在test中就可以直接使用,无需手动创建applicationcontext类了。

看来这个@Runwith与@BeforClass的意思是差不多了,是的。不过@BeforClass是在运行测试前调用这个静态方法。而@Runwith是运行测试前运行这个类

查看注解里面的申请:

里面要求的是class,类的class管理。要求这个传递的class要继承与Runner类

我们继承这个类,查看要求,这个类是一个抽象类:

继承这个抽象类,需要实现2方法,一个是销毁,一个运行。当重写这两个方法后,在运行Junit前应该就是调用run,运行完毕后在调用销毁方法。

但当我们这样写后,报错了,也没有深究。但意思是这个意思,在运行Junit测试前,会调用这个run开始做初始化或是其他操作。

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

推荐阅读更多精彩内容