单元测试框架——JUnit

目录

1.什么是JUnit?

2.如何使用JUnit?

3.实际使用

3.1 创建一个用于测试的类

3.2 生成的测试类

3.3 测试结果

4.失败的两种情况

4.1 Failure

4.1 Error

5.执行流程

5.1 BeforeClass

5.2 Before

5.3 After

5.4 AfterClass

6.常用注解

7.测试套件

8.参数化设置

9.参考


1.什么是JUnit?

JUnit是一个Java语言的单元测试框架。

它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。

JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

2.如何使用JUnit?

可以通过添加Jar包,如果是Maven项目可以直接添加依赖,此外很多开源架构中已经集成了JUnit。

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

3.实际使用

下面就是一个例子,开发工具 Intell IDEA:

3.1 创建一个用于测试的类

package main.java;

/**
 * @ClassName Calculate
 * @Author Bysen
 * @Date 2020/8/3 22:04
 * @Description TODO
 * @Version 1.0
 **/
public class Calculate {
    public int add(int a,int b){
        return a+b;
    }
    public int subtract(int a,int b){
        return a-b;
    }
    public int multiply(int a,int b){
        return a*b;
    }
    public int divide(int a,int b){
        return a/b;
    }
}

然后在类上 右键==》Go To==》Ttest,选择Creat new test 创建测试类。

3.2 生成的测试类

添加了部分测试代码

package main.java;


import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.*;


public class CalculateTest {


    @Test
    public void addTest() {
        Assert.assertEquals(6,new Calculate().add(3,3));
    }

    @Test
    public void subtractTest() {
        Assert.assertEquals(0,new Calculate().subtract(3,3));
    }

    @Test
    public void multiplyTest() {
        Assert.assertEquals(9,new Calculate().multiply(3,3));
    }

    @Test
    public void divideTest() {
        Assert.assertEquals(1,new Calculate().divide(3,3));
    }
}

注意:

  • 测试方法上必须使用@Test进行修饰
  • 测试方法必须使用public void 进行修饰,不能带任何参数
  • 测试类的包应该和被测试类的包保持一致
  • 测试单元中的每一个方法必须是可以独立测试,测试方法不能有任何依赖
  • 测试类使用Test作为类名的后缀(非必须)
  • 测试方法使用test作为方法名前缀(非必须)

3.3 测试结果

此时可以运行该类,可以看到右下角显示的结果,测试全部通过:

当然实际的项目中不会有这么简单的方法,以及如此简单的测试用例,所以测试失败在所难免,下面就是两种测试失败的情况

4.失败的两种情况

4.1 Failure

        一般来说是由单元测试使用断言的方法判断失败所引起的,这表示测试点发现了问题,实际结果与预期不一致。

例如:将addTest方法的预期值改为5,参数仍是3,3

4.1 Error

        error是由代码异常引起的,他可以产生于测试代码本身的错误,也可能是由于被测试代码中隐藏的Bug引起。

例如:将divide方法参数改为3,0。由于0不能做除数,所以

注意:测试不是证明你是对的,而是证明你没有错。

5.执行流程

直接看测试结果:

5.1 BeforeClass

        被该注解修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就运行它,而且在内存中只会存在一份实例,它比较适合加载配置文件。

5.2 Before

        在每个测试方法开始前执行。

5.3 After

        在每个测试方法结束后执行。

5.4 AfterClass

        AfterClass 所修饰的方法通常用来对资源的清理,例如关闭数据库连接。

6.常用注解

  • @Test(expected = java.lang.ArithmeticException.class,timeout = 3000)
    expected用于异常处理,timeout用于超时处理
    
  • @Ignore
    被该注解修饰的方法会被忽略
    
  • @RunWith()
    用于更改测试运行器
    

7.测试套件

        测试套件就是组织测试类一起运行的,写一个类作为测试套件的入口类,这个类不包含其他方法。

  • 更改测试运行器Suite.class
  • 将要测试的类作为数组传入到@Suite.suiteclass({})

例如:

@RunWith(Suite.class)
@Suite.SuiteClasses({CalculateTest.class})

8.参数化设置

  1. 更改默认的测试运行器为Parameterized.class
  2. 声明变量存放预期值和结果值
  3. 声明一个返回值为collection的公共静态方法,并使用@parameter进行修饰
  4. 为测试类声明一个带参数的公共构造方法,并在其中为之声明变量赋值

9.参考

https://junit.org/junit4/

https://baike.baidu.com/item/junit

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

https://blog.csdn.net/yilia_jia/article/details/89328689

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值