千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 一文搞定java单元测试junit

一文搞定java单元测试junit

来源:千锋教育
发布人:wjy
时间: 2023-01-29 11:40:00 1674963600

  首先什么是单元测试?

  单元测试就是编写测试代码,用以检测特定的、明确的、细颗粒的功能! 严格来说,单元测试只针对具体功能点进行测试,不包括对整个业务流程正确性的测试。

  目前java开发所用的单元测试是Junit框架,在大多数java的开发环境中已经集成,可以方便开发自己调用!

  本文主要介绍一下junit的基本使用。

  1:导入

  当我们想在我们的项目中使用junit的时候,怎么导入呢?以eclipse为例,在项目中右键buildpath—>点击configure build path,如下图:

java单元测试junit1

  然后,点击library的add library

java单元测试junit2

  然后选择junit

java单元测试junit3

  Next 选择junit4

  点击finish,项目中就有junit的包了,就可以正常使用了

  如下:

java单元测试junit4

  2:创建测试用例类

  当项目中可以使用junit后,将被测试的功能类添加进项目,然后创建测试用例的包,下来就可以创建测试用例类了

  如图:

  在包的右键中,new选择other

java单元测试junit5

  在other中选择java中的junit的testcase

java单元测试junit6

  这时候会弹出:

java单元测试junit7

  在上面红框中给自己的用例类起个名字,下面的红框中选择被测试的功能类,

  中间绿色框中是几个继承方法,生成后说明

  然后点击finish

  用例类生成成功

java单元测试junit8

  这里面上面四个就是刚才勾选的四个方法,如注释说明,两个控制整个测试过程,两个控制单个测试方法的执行过程,都是前置和后置执行方法。

  具体注解说明如下:

  @BeforeClass 全局只会执行一次,而且是第一个运行

  @Before 在测试方法运行之前运行

  @Test 测试方法

  @After 在测试方法运行之后允许

  @AfterClass 全局只会执行一次,而且是最后一个运行

  @Ignore 忽略此方法

  接下来就可以在@test注解的方法中完成用例方法了

  3:断言

  JUnit的核心内容就是断言,其主要作用在于判断我们程序执行的结果是否跟我们预期的一致。

java单元测试junit9

  4:用例方法的实现

  学会了使用断言后,就可以在测试方法中调用功能方法,得到其返回值,然后设计自己的测试用例的预期结果,通过断言比较两个结果,就可以实现测试用例方法了。

  简单举个例子:

  有个被测方法,很简单,两个数相加:

java单元测试junit10

  然后在用例方法中,调用其功能,设计数据,得到实际结果,就可以与预期通过断言比对了

java单元测试junit11

  然后右键执行,可能有两种结果,一种是通过,一种是fail,关键取决于数据的设计

  如下:

java单元测试junit12

  右键测试用例类,选择run as 中的junit Test就可以执行用例方法了

  结果:这是失败的例子

java单元测试junit13

  可以看出,执行了一个,失败了一个,原因是预期18 但是实际是17

  改一下数据,重新运行,

java单元测试junit14

  发现通过了。

  5:junit参数化

  如果测试的代码大同小异,代码结构也都是相同的,不同的只是测试的数据和预期值,那么我们有没有更好的办法将相同的代码结构提取出来,提高代码的重用度呢?

  解决:可以进行参数化测试。

  步骤:

  1:要进行参数化测试,需要在类上面指定如下的运行器:@RunWith (Parameterized.class)

  2:在提供数据的方法上加上一个@Parameters注解,这个方法必须是静态static的,并且返回一个集合Collection。

  3:在测试类的构造方法中为各个参数赋值,(构造方法是由JUnit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。

  如下代码:

java单元测试junit15

java单元测试junit16

  6:测试套件TestSuit的使用

  在测试类不端增加的情况下,如何运行所有的单元测试代码类?一个个测试类的执行吗?显然繁琐且费劲。 将要运行的测试类都集成在我们的测试套件中,比如一个系统功能对应一个测试套件,一个测试套件中包含多个测试类,每次测试系统功能时,只要执行一次测试套件就可以了。

  如下代码实现,就可以一起执行我们的测试用例类的所有用例方法了:

java单元测试junit17

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT