『Java』Junit单元测试

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...

你可能感兴趣的:(Java)