Junit单元测试下载、配置、使用

发布时间 2023-11-13 23:35:28作者: べ微熏の斜陽べ

Junit单元测试下载、配置、使用

目录

什么是Junit单元测试?

为什么要使用Junit单元测试?

如何下载(junit.jar和hamcrest-core都要下载):

在IDEA中配置Junit(以下好的文件进行配置)

Junit4常用注解

Junit单元测试的使用

1,@Test注解示例:

2、用例的执行顺序

3,@Before示例:

4,@After:

5,@BeforeClass:

6,@AfterClass:

7,@Ignore:


什么是Junit单元测试

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。所谓 xUnit,就是一套基于测试驱动开发的测试框架,它的机制:将程序 预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性。

单元测试是一个对单一实体(类或方法)的测试

为什么要使用Junit单元测试?

在刚刚接触到Junit的时候有一个这样的问题,进行测试的话可以使用main函数,那为什么要使用junit?

总结:有以下几点

  • Junit单元测试可单个多个运行,多个共享数据
  • 有很多注解,可以在之前...之后运行
  • 比main代码少一点
  • 断言测试预期结果

最重要的是规范以及方便,main写完测试完后 都是注释或者直接删掉,而Junit不需要

如何下载(junit.jar和hamcrest-core都要下载):

Junit官网下载地址

img

img

1,进入下载页面选择下载的文件

img

img

下载完后就是这两个文件:

img

在IDEA中配置Junit(以下好的文件进行配置)

在项目目录中新建一个新的Directory目录,取个名 lib

img

  • 将下载好的两个jar包复制到建好的 lib目录中

img

  • 选择lib目录然后点击右键选择“Add as Library......”

img

  • 这样就完成了

Junit4常用注解

@Test 将一个方法标记为测试方法
@Before 每一个测试方法调用前必执行的方法
@After 每一个测试方法调用后必执行的方法
@BeforeClass 所有测试方法调用前执行一次,在测试类没有实例化之前就已被加载,需用static修饰
@AfterClass 所有测试方法调用后执行一次,在测试类没有实例化之前就已被加载,需用static修饰
@Ignore 暂不执行该方法

1,JUnit4的单元测试用例执行顺序为:

​ @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;

2,每一个测试方法的调用顺序为:

​ @Before -> @Test -> @After;

Junit单元测试的使用

1,@Test注解示例:

import org.junit.Test;

public class Demo {
    @Test
    public void example1(){
        System.out.println("示例1");
    }

    @Test
    public void example2(){
        System.out.println("示例2");
    }

    @Test
    public void example3(){
        System.out.println("示例3");
    }

}

img

2、用例的执行顺序

​ 如下图所示,测试用例的执行并不会按照我们编写代码的顺序来执行

@Test
public void example3(){
    System.out.println("示例1");
}

@Test
public void example1(){
    System.out.println("示例2");
}

@Test
public void example2(){
    System.out.println("示例3");
}

img

3,@Before示例:

  • junit测试类中的任意一个测试方法执行 都会执行此方法
  • 该类型的方法可以被用来为测试方法初始化所需的资源。
import org.junit.Before;
import org.junit.Test;

public class Demo {
    @Before
    public void example4(){
        System.out.println("示例Before");
    }

    @Test
    public void example3(){
        System.out.println("示例1");
    }

    @Test
    public void example1(){
        System.out.println("示例2");
    }

    @Test
    public void example2(){
        System.out.println("示例3");
    }

}

img

4,@After:

  • junit测试类中的任意一个测试方法执行后 都会执行此方法,即使被@Test 或 @Before修饰的测试方法抛出异常

该类型的方法被用来关闭由@Before注解修饰的测试方法打开的资源。

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class Demo {
    @Before
    public void example4(){
        System.out.println("示例Before");
    }

    @After
    public void example5(){
        System.out.println("After");
        System.out.println();
    }

    @Test
    public void example1(){
        System.out.println("示例1");
    }

    @Test
    public void example2(){
        System.out.println("示例2");
    }

    @Test
    public void example3(){
        System.out.println("示例3");
    }

}

img

5,@BeforeClass:

  • 只被执行一次
  • 运行junit测试类时第一个被执行的方法

这样的方法被用作执行计算代价很大的任务,如打开数据库连接。被@BeforeClass 注解的方法应该是静态的(即 public static类型的)。

import org.junit.*;

public class Main {

    @BeforeClass
    public static void example1() {
        System.out.println("示例BeforeClass");
    }

    @Test
    public void example3() {
        System.out.println("示例3");
    }
}

img

6,@AfterClass:

  • 只被执行一次
  • 运行junit测试类是最后一个被执行的方法

该类型的方法被用作执行类似关闭数据库连接的任务。被@AfterClass 注解的方法应该是静态的(即 public static类型的)。

import org.junit.*;

public class Main {

    @BeforeClass
    public static void example1() {
        System.out.println("示例BeforeClass");
    }

    @AfterClass
    public static void example4() {
        System.out.println("示例AfterClass");
    }

    @Test
    public void example3() {
        System.out.println("示例3");
    }

    @Test
    public void example2() {
        System.out.println("示例3");
    }
}

img

7,@Ignore:

忽略测试(Ignore test)被用来禁止执行junit测试类的某些或者全部测试方法。

  • Junit 4 Ignore Test 应用到某些测试方法上
import org.junit.*;

public class Main {
    @Test
    public void example1() {
        System.out.println("示例1");
    }

    @Test
    public void example2() {
        System.out.println("示例2");
    }

    @Test
    public void example3() {
        System.out.println("示例3");
    }

    @Ignore
    @Test
    public void example4() {
        System.out.println("示例4");
    }

    @Test
    public void example5() {
        System.out.println("示例5");
    }
}

img