java | junit | 基本+技巧

1.参考链接

1.1 单测概念

https://medium.com/@lathasreeseeni/junit-2d9857773e8

1.2 高级技巧

https://symflower.com/en/company/blog/2023/how-to-write-junit-test-cases-advanced-techniques/

  • assertThrows:
    有时候,我们的方法,需要抛出错误。例如,deleTask(id) 中,id不存在的时候,需要抛错。那么在单测中,就可以用assertThrows。
  • @ParameterizedTest:
    场景:多个不同输入对应的结果
java 复制代码
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {
    
    @ParameterizedTest
    @CsvSource({
        "1, 2, 3",
        "0, 0, 0",
        "-1, 1, 0",
        "100, -100, 0"
    })
    void testAdd(int a, int b, int expected) {
        Calculator calculator = new Calculator();
        int result = calculator.add(a, b);
        assertEquals(expected, result);
    }
}
  • assumeTrue(condition)
    condition正确再执行下面的语句

-assumeFalse

condition错误再执行下面的语句,也就是说,condition为true则不会执行下面的语句。

java 复制代码
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assume.assumeTrue;

public class MyTest {
    
    @Test
    public void testAdd() {
        assumeTrue(2 + 2 == 4);
        // ↑2+2=4这个假设是正确的,执行↓ 
        assertEquals(4, Calculator.add(2, 2));
    }
    
}
  • @Parameterized.Parameters
    构造多个参数,可以是对象的参数
java 复制代码
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;
import java.util.Collection;

import static org.junit.Assert.assertEquals;


@RunWith(Parameterized.class)
public class CalculatorTest {

    private int a, b, expected;

    public CalculatorTest(int a, int b, int expected) {
        this.a = a;
        this.b = b;
        this.expected = expected;
    }

    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
                {1, 1, 2},
                {2, 3, 5},
                {5, 5, 10},
                {10, 0, 10},
                {-5, 5, 0}
        });
    }

    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(a, b);
        assertEquals(expected, result);
    }
}
相关推荐
敲代码的嘎仔4 小时前
数据结构算法学习day3——二分查找
java·开发语言·数据结构·学习·程序人生·算法·职场和发展
代码不停4 小时前
JavaEE多线程进阶
java·数据结构·java-ee
SimonKing4 小时前
聊聊Spring里那个不打扰Controller就能统一改响应的“神器”
java·后端·程序员
TDengine (老段)4 小时前
TDengine 数学函数 TRUNCATE 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
安冬的码畜日常4 小时前
【JUnit实战3_23】 第十四章:JUnit 5 扩展模型(Extension API)实战(上)
测试工具·junit·单元测试·jdbc·h2·extension模型·junit5扩展
鹓于4 小时前
Excel图片批量插入与文件瘦身
java·服务器·数据库
TDengine (老段)4 小时前
TDengine 数据函数 CORR 用户手册
大数据·数据库·物联网·时序数据库·tdengine·1024程序员节
鬼火儿4 小时前
Redis Desktop Manager(Redis可视化工具)安装
java·后端
凛_Lin~~4 小时前
安卓接入Twitter三方登录
android·java·twitter
ᐇ9594 小时前
Java核心概念深度解析:从包装类到泛型的全面指南
java·开发语言