还在通过注释代码来进行功能测试?那你需要看看这份 Junit 单元测试指南

  1. 未打印出测试结果和期望结果;

因此此时我们就需要一种新的测试框架来帮助我们编写测试,而 JUnit 则是专门针对 Java 而设计的一种标准单元测试框架。作为一个 Java 开发者,学习 JUnit 来进行测试是必备技能。

如何安装 JUnit

  • 本地安装

对于这种方法,我们只需要去下载 JUnit 最新的包,当前有 Junit4 和 Junit5 两个版本,可以根据自己的需要进行选择然后导入我们 IDE 的依赖文件即可,依赖文件下载地址如下:

JUnit4:https://github.com/junit-team/junit4/releases/

JUnit5:https://github.com/junit-team/junit5/releases/

以 IDEA 为例,依次打开 File -> Project Structure -> Project Settings -> Modules -> Dependencies -> 点击 + -> Library... -> Java,最后找到下载的 JUnit 文件即可;

  • Maven 安装

当使用 Maven 之后,我们就能十分简单地安装 JUnit 了,只需要在项目的 pom.xml 配置文件中导入依赖即可;

junit

junit

4.13

test

使用 Junit 进行单元测试

首先我们需要有一个主类,然后基于改类来进行测试,这里我们以简单的运算器为例;

创建一个简易计算机类 Calc,然后包括加法 add 和减法 sub 两个方法;

package com.cunyu;

/**

  • @author : cunyu

  • @version : 1.0

  • @className : Calc

  • @date : 2021/3/30 10:04

  • @description : 简易计算器

*/

public class Calc {

/**

  • @param num1 加数

  • @param num2 加数

  • @return 两数之和

  • @description 加法

  • @date 2021/3/30 10:04

  • @author cunyu

  • @version 1.0

*/

public int add(int num1, int num2) {

return num1 + num2;

}

/**

  • @param num1 减数

  • @param num2 被减数

  • @return 两数之差

  • @description 两数之差

  • @date 2021/3/30 10:11

  • @author cunyu

  • @version 1.0

*/

public int sub(int num1, int num2) {

return num1 - num2;

}

}

定义好上述主类之后,我们来进行测试,测试步骤如下;

  1. 定义测试类

定义测试类时,我们推荐定义类名时就是 主类Test 的形式,比如我们上面的类为 Calc,我们要对其进行测试,则测试类的类名为 CalcTest

package com.cunyu;

/**

  • @author : cunyu

  • @version : 1.0

  • @className : CalcTest

  • @date : 2021/3/30 10:15

  • @description : 简易计算器测试

*/

public class CalcTest {

}

  1. 定义测试方法

测试类定义好之后,我们就可以定义测试方法了,而定义测试方法时,我们也有几点建议;

  • 测试方法名是在主类方法名前加上 test,比如我们上边的方法为 add,则我们对应的测试方法名为 testAdd

  • 针对测试方法的返回值,因为我们只需要在方法内给出结果即可,不用再供其他人调用,所以建议返回值设置为 void

  • 针对测试方法的参数列表,由于我们主要还是针对传统建类调用方法测试的方法,所以此时最好是保持参数列表为空;

package com.cunyu;

import org.junit.Assert;

import org.junit.Test;

/**

  • @author : cunyu

  • @version : 1.0

  • @className : CalcTest

  • @date : 2021/3/30 10:15

  • @description : 简易计算器测试

*/

public class CalcTest {

@Test

public void testAdd(){

Calc calc = new Calc();

int result = calc.add(1,5);

Assert.assertEquals(6,result);

}

}

其中,@Test 为注解,用来注释一个普通的方法为一条测试用例。assertEquals 方法用于断言两个值是否相等。

如果测试成功,则在 IDE 中会出现如下提示。

一般来讲,测试成功一般是绿色,而测试失败则是红色。

  • 测试成功的界面

  • 测试失败的界面

总结起来,我们针对一个方法的具体测试的步骤如下:

  1. 首先是创建被测试类的对象;

  2. 然后调用被测试的方法;

  3. 最后加入断言,判断调用方法得到结果和实际的结果之间是否相同;

JUnit 常用注解


由于现在主要用到的有 Junit4 和 Junit5 两个版本,而两者之间也是存在一些区别的,所以在这里给出两者中常用注解的一些差异。

下表中,给出了 Junit4 和 Junit5 中所共有功能的对应注解:

| Junit4 注解 | Junit5 注解 | 说明 |

| :-: | — | :-- |

| @Test | @Test | 标识一条测试用例 |

| @Ignore | @Disable | 忽略的测试用例 |

| @Before | @BeforeEach | 每一个测试方法之前运行 |

| @After | @AfterEach | 每一个测试方法之后运行 |

| @BefreClass | @BeforeAll | 所有测试开始之前运行 |

| @AfterClass | @AfterAll | 所有测试结果之后运行 |

| @Category | @Tag | 标记和过滤 |

而相对于 Junit4,Junit5 也有做出升级,其特有的一些注解如下:

| 注解 | 说明 |

| — | — |

| @TestFactory | 测试工厂进行动态测试 |

| @Nested | 嵌套测试 |

| @ExtendWith | 注册自定义扩展 |

常用断言方法


而在测试中,我们经常用到断言方法。这些断言方法都来自于由继承了 java.lang.ObjectAssert 类,用于提供编写测试。

| 方法 | 说明 |

| :-- | :-- |

| void assertArrayEquals([String message],expected array, result array) | 断言预期数组和结果数组相等 |

| void assertEquals([String message],expected value, actual value) | 断言两个值是否相等。类似于字符串比较使用的 equals() 方法 |

| void assertNotEquals(String message], first, second) | 查看两个对象是否不相等 |

| void assertNull(String message], object) | 查看对象是否为空 |

| void assertNotNull(String message], object) | 查看对象是否不为空 |

| void assertSame(String message], expected, actual) | 查看两个对象的引用是否相等。类似于使用 == 比较两个对象 |

| void assertNotSame(String message], unexpected, actual) | 查看两个对象的引用是否不相等。类似于使用 != 比较两个对象 |

| void assertTrue(String message], boolean condition) | 查看运行结果是否为 true |

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

等。类似于使用 == 比较两个对象 |

| void assertNotSame(String message], unexpected, actual) | 查看两个对象的引用是否不相等。类似于使用 != 比较两个对象 |

| void assertTrue(String message], boolean condition) | 查看运行结果是否为 true |

[外链图片转存中…(img-TjnhsAO7-1719283892334)]
[外链图片转存中…(img-Gzo7dUY6-1719283892334)]
[外链图片转存中…(img-5sKcNaEc-1719283892335)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值