欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

『Java』Junit单元测试

程序员文章站 2022-04-29 15:07:00
...

1. 如何进行单元测试

  • 测试分类:

    1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。
    2. 白盒测试:需要写代码的。关注程序具体的执行流程。
  • Junit 使用:白盒测试

    • 步骤:

      1. 定义一个测试类(测试用例)

        • 建议:
          • 测试类名:被测试的类名Test CalculatorTest
          • 包名:xxx.xxx.xx.test com.github.ice
      2. 定义测试方法:可以独立运行

        • 建议:
          • 方法名:test测试的方法名 testAdd()
          • 返回值:void
          • 参数列表:空参
      3. 给方法加@Test

      4. 导入 junit 依赖环境

    • 判定结果:

      • 红色:失败
      • 绿色:成功
      • 一般我们会使用断言操作来处理结果
        • Assert.assertEquals(期望的结果,运算的结果)

2. JUnit 5 vs JUnit 4 - 注释

特征 JUNIT 4 JUNIT 5
声明一种测试方法 @Test @Test
在当前类中的所有测试方法之前执行 @BeforeClass @BeforeAll
在当前类中的所有测试方法之后执行 @AfterClass @AfterAll
在每个测试方法之前执行 @Before @BeforeEach
每种测试方法后执行 @After @AfterEach
禁用测试方法/类 @Ignore @Disabled
测试工厂进行动态测试 NA @TestFactory
嵌套测试 NA @Nested
标记和过滤 @Category @Tag
注册自定义扩展 NA @ExtendWith

2.1 JUnit 4 使用

import org.junit.*;

public class MyTest {


    @BeforeClass
    public static void born() {
        System.out.println("BeforeClass...");
    }

    @Before
    public void init() {
        System.out.println("Before...");
    }

    @Test
    public void test1() {
        System.out.println("Test1...");
    }

    @Test
    public void test2() {
        System.out.println("Test2...");
    }

    @Ignore
    public void func() {
        System.out.println("Ignore...");
    }

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

	@AfterClass
    public static void over() {
        System.out.println("AfterClass...");
    }
}
输出结果:
BeforeClass...
Before...
Test1...
After....
Before...
Test2...
After....
AfterClass...

2.1 JUnit 5 使用

import org.junit.jupiter.api.*;

public class MyTest {

    @BeforeAll
    public static void born() {
        System.out.println("BeforeAll...");
    }

    @BeforeEach
    public void init() {
        System.out.println("BeforeEach...");
    }

    @Test
    public void test1() {
        System.out.println("Test1...");
    }

    @Test
    public void test2() {
        System.out.println("Test2...");
    }

    @Disabled
    public void func() {
        System.out.println("Disabled...");
    }

    @AfterEach
    public void close() {
        System.out.println("AfterEach....");
    }

    @AfterAll
    public static void over() {
        System.out.println("AfterAll...");
    }
}
输出结果:
BeforeAll...

BeforeEach...
Test1...
AfterEach....


BeforeEach...
Test2...
AfterEach....

AfterAll...