全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

一文搞定java单元测试junit

发布时间:2023-01-29 11:40:00
发布人:wjy

  首先什么是单元测试?

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

  目前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

相关文章

Java Nio中Selector是什么?

Java Nio中Selector是什么?

2023-10-15
ThreadLocal为什么会发生内存泄漏?

ThreadLocal为什么会发生内存泄漏?

2023-10-15
工业机器人、自动化、PLC三者是什么关系?

工业机器人、自动化、PLC三者是什么关系?

2023-10-15
为什么Redis要对一种数据类型存储两次呢?

为什么Redis要对一种数据类型存储两次呢?

2023-10-15

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取