java | junit | 基本+技巧

embedded/2024/10/11 13:21:35/

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 {@Testpublic 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.Parameterspublic static Collection<Object[]> data() {return Arrays.asList(new Object[][]{{1, 1, 2},{2, 3, 5},{5, 5, 10},{10, 0, 10},{-5, 5, 0}});}@Testpublic void testAdd() {Calculator calculator = new Calculator();int result = calculator.add(a, b);assertEquals(expected, result);}
}

http://www.ppmy.cn/embedded/9638.html

相关文章

第八章_VLAN、Trunk和VLAN间路由

VLAN和 Trunk是企业局域网最基本和最核心的网络技术&#xff0c;在部著和实施局域网时应用广泛。VLAN技术可以很容易地控制广播域的大小。有了VLAN&#xff0c;交换机之间的级联链路就需要Trunk技术来保证该链路可以同时传输多个VLAN的数据。管理员可以手动配置交换机之间链路上…

[MySQL数据库] 索引与事务

1. 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针.可以对表中的一列或多列创建索引,并指定索引的类型&#xff0c;各类索引有各自的数据结构实现. 1.2 作用 数据库中的表、数据、索引之间的关系&#xff0c;类似于书架上的图书、书籍…

nginx使用http2,并配置ssl证书

** nginx使用http2&#xff0c;并配置ssl证书 ** 想要使用http2&#xff0c;需要在安装nginx时安装http2模块和ssl模块 前置条件nginx版本需要在1.9.5以上 #解压nginx包 tar -zxvf nginx-1.18.0.tar.gz #进入nginx目录 cd nginx-1.18.0 #执行 ./configure --prefix/usr/lo…

SpringCloud系列(9)--将服务消费者Consumer注册进Eureka Server

前言&#xff1a;上一章节我们介绍了如何将服务提供者注册进Eureka服务里&#xff0c;本章节则介绍如何将服务消费者Consumer注册进Eureka服务里 Eureka架构原理图 1、修改consumer-order80子模块的pom.xml文件&#xff0c;引入Eureka Clinet的依赖&#xff0c;然后reolad一下&…

智慧公厕解决方案易集成好使用的智能硬件

在现代城市建设中&#xff0c;智慧公厕的需求日益增长。为了提供更好的用户体验和更高效的管理&#xff0c;易集成、好使用的智能硬件成为智慧公厕解决方案的关键组成部分。 1. 蹲位有人无人感应器&#xff1a;是用于检测厕位有人无人的设备&#xff0c;根据现场不同的安装条件…

未来城市可视化,A3D引擎支持,免费搭建全新一代数字孪生!

AMRT3D数字孪生引擎https://www.amrt3d.com/#/ 什么是未来城市&#xff1f;它是新型数字化理念的载体&#xff0c;以数字孪生与物理世界城市的融合为核心&#xff0c;通过数字孪生技术在数字空间实时构建城市&#xff0c;采用数据整合和分析预测来实时模拟、预测、控制整体城市…

Qt-控件篇

QPushbutton 1、设置按钮文本 pushButton->setText("按钮"); 2、获取按钮文本 pushButton->text(); 3、设置按钮的大小为特定值&#xff08;宽度和高度&#xff09; pushButton->setFixedSize(width,height); 4、设置按钮悬停时的工具提示文本。 pushButto…

如何批量给Word文件增加前缀序号?“汇帮批量重命名”帮助你批量给word文件增加前缀序号。

批量给Word文件增加前缀序号的过程&#xff0c;对于经常处理大量文档的人来说&#xff0c;是一项既繁琐又必要的任务。首先&#xff0c;我们需要明确为什么要给Word文件增加前缀序号。在很多情况下&#xff0c;当我们需要按照一定的顺序对多个文档进行管理和归档时&#xff0c;…