Junit单元测试—Maven

news/2024/10/19 4:25:14/文章来源:https://www.cnblogs.com/promiseforyou/p/18472853

JUnit 单元测试常用注解

测试顺序大概流程

//第一步: 创建测试类, 测试类的类名一般是:   被测试类类名 + Test
public class MathUtilsTest {/*第二步: 为了保证每个方法独立, 为测试的每个方法单独创建测试方法测试方法要求(规格):(1) 不能有参数(2) 不能返回值(3) 方法名建议:  test+被测试的方法(遵循驼峰命名规范)(4) 修饰符必须是public*/// 第三步: 为了保证每个测试方法都能够独立运行,需要加上一个注解@Test/*@Test : 可以让测试方法独立运行  (核心注解)@Before(@BeforeEach): 在每个测试方法运行之前都运行一次@After(@AfterEach): 在每个测试方法运行之后都运行一次@BeforeClass(@BeforeAll): 在类加载的时候走一次(该注解修饰的测试方法必须是静态方法)@AfterClass(@AfterAll) : 在所有的测试方法走完之后走一次(同样只能修饰静态方法 就是静态代码块)总结:使用步骤:(1) 导包(2) 创建测试类:类名要求: 要测试的类+Test(3) 在测试类中定义测试方法方法要求:(1) 没有返回值, 没有参数(2) 权限修饰符必须是public(3) 方法名要求:test+要被测试的方法名(4) 抗上@Test即可优点:(1) 每个方法测试都单独测试互不影响(2) 自动化测试(3) 能够生成测试报告(4) 还可以断言Assert*//*断言:所谓断言:意思是程序员可以预测程序的运行结果,检查程序的运行结果是否与预期一致。由junit的Asset工具类实现eg: Assset.assrtEquals("提示消息",预期目标,实际结果);*/
}

JUnit 是 Java 中最常用的单元测试框架,以下是一些常用的注解及其用法示例。

1. @Test

  • 用途:标识一个方法为测试方法。

  • 示例

    import org.junit.jupiter.api.Test;
    import static org.junit.jupiter.api.Assertions.assertEquals;public class MathUtilsTest {@Testpublic void testAdd() {MathUtils mathUtils = new MathUtils();int result = mathUtils.add(2, 3);assertEquals(5, result, "2 + 3 应该等于 5");}
    }
    

2. @BeforeEach

  • 用途:在每个测试方法执行之前运行的方法,通常用于设置测试环境。

  • 示例

    import org.junit.jupiter.api.BeforeEach;
    import org.junit.jupiter.api.Test;public class MathUtilsTest {private MathUtils mathUtils;@BeforeEachpublic void setUp() {mathUtils = new MathUtils(); // 每个测试前创建新的 MathUtils 实例}@Testpublic void testAdd() {assertEquals(5, mathUtils.add(2, 3));}
    }
    

3. @AfterEach

  • 用途:在每个测试方法执行之后运行的方法,通常用于清理测试环境。

  • 示例

    import org.junit.jupiter.api.AfterEach;
    import org.junit.jupiter.api.Test;public class MathUtilsTest {@AfterEachpublic void tearDown() {// 清理操作,例如关闭连接、释放资源等}@Testpublic void testAdd() {// 测试逻辑}
    }
    

4. @BeforeAll

  • 用途:在所有测试方法执行之前运行的方法,适用于静态方法,通常用于一些昂贵的设置操作。

  • 示例

    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;public class MathUtilsTest {@BeforeAllpublic static void init() {// 进行全局的设置操作,例如加载配置}@Testpublic void testAdd() {// 测试逻辑}
    }
    

5. @AfterAll

  • 用途:在所有测试方法执行之后运行的方法,适用于静态方法,通常用于清理全局资源。

  • 示例

    import org.junit.jupiter.api.AfterAll;
    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;public class MathUtilsTest {@BeforeAllpublic static void init() {// 全局设置}@AfterAllpublic static void cleanUp() {// 清理全局资源}@Testpublic void testAdd() {// 测试逻辑}
    }
    

6. @Disabled

  • 用途:标识一个测试方法(或类)为禁用,JUnit 不会执行该测试。

  • 示例

    import org.junit.jupiter.api.Disabled;
    import org.junit.jupiter.api.Test;public class MathUtilsTest {@Disabled("此测试暂时禁用")@Testpublic void testAdd() {// 此测试不会被执行}
    }
    

7. @ParameterizedTest

  • 用途:用于参数化测试,允许用不同的参数运行同一个测试方法。

  • 示例

    import org.junit.jupiter.params.ParameterizedTest;
    import org.junit.jupiter.params.provider.CsvSource;public class MathUtilsTest {@ParameterizedTest@CsvSource({"1, 2, 3","2, 3, 5","4, 5, 9"})public void testAdd(int a, int b, int expected) {MathUtils mathUtils = new MathUtils();assertEquals(expected, mathUtils.add(a, b));}
    }
    

8. @Nested

  • 用途:用于组织测试,允许将测试分组在一起,便于维护和可读性。

  • 示例

    import org.junit.jupiter.api.Nested;
    import org.junit.jupiter.api.Test;public class MathUtilsTest {@Nestedclass AddTests {@Testpublic void testAddPositiveNumbers() {MathUtils mathUtils = new MathUtils();assertEquals(5, mathUtils.add(2, 3));}@Testpublic void testAddNegativeNumbers() {MathUtils mathUtils = new MathUtils();assertEquals(-5, mathUtils.add(-2, -3));}}
    }
    

9. @DisplayName

  • 用途:用于设置测试方法名,便于针对性测试
  • 示例

断言判断:Assertions.assertEquals("预期值","实际值",提示信息)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/816498.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语法基础

标识符 标识符就是名字,函数名、变量名、类名、对象名、常量名等。 只能有字母、数字、下划线组成,不能以数字开头。尽量不要使用下划线开头。 不能使用C++关键字作为标识符。 大小写敏感。 标识符命名规范: 标识符要见名知意。 普通变量命名:类型缩写+单词(首字母大写)。…

无线串口模块—配置软件以及串口助手的使用

1、适用型号 本文适用于无线串口模块调试。 文中的软件界面截图,可能会由于软件系列、软件版本不同而略有区别。 2、使用参数设置软件RF_Setting 使用方法(以E32-433TBL-01型号lora模块开发测试套件说明) 说明:E32-433TBL-01是贴片串口模块结合USB转TTL串口底板形成的无线模…

C#线程6---并发集合

简介:编程需要对基本的数据结构和算法有所了解。程序员为并发情况选择最合适的数据结 构,那就需要知道很多事情,例如算法运行时间、空间复杂度,以及大写0标记法等。在不 同的广为人知的场景中,我们总知道哪种数据结构更高效。对于并行计算,我们需要使用适当的数据结构。这…

『模拟赛』多校A层冲刺NOIP2024模拟赛08

『模拟赛记录』多校A层冲刺NOIP2024模拟赛08Rank 还行A. 传送 (teleport) 签。 单元最短路,先想 Dijkstra。发现这道题还有个不同寻常的移动方式,可以以 \(min\left(|x_i-x_j|,|y_i-y_j|\right)\) 的代价从 \(i\) 移动到 \(j\)。暴力连边是 \(\mathcal{O(n^2)}\) 的,时间空间…

一、STM32F103C8T6--GPIO

STM32f103c8t6 32位Cortex-M3内核 RISC处理器,最高主频72MHZ,Flash:64KB,SRAM:20KB 片上外设: I/O端口:多达37个GPIO引脚(支持复用功能)。 GPIO 端口支持输入、输出、上拉/下拉功能。定时器:3 个 16 位通用定时器(支持 PWM 输出)。******** 1 个高级定时器(支持多通…

订阅

订阅权限配置类型 来源 备注订阅消息 微信后台开通 必需消息推送 微信后台开通 必需官方文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html相关权限设置: 一:登录微信后台,选择开发管理,启用消息推送。二:选择订…

cornerstone中RAFT的buffer的实现

1.概览: 谈到raft协议实现就绕不开网上流行的mit6.824,但其为go语言,官方没有lab的答案,框架也很晦涩难懂,且全网没有一个博客对其有清晰的解释,有的只是甩一堆名词然后直接贴没有任何注释的代码,非常不适合学习。 但是github上面的cornerstone是纯c++实现的一个非常优雅…

Dbeaver24.2.2安装和使用教程(免费的数据库管理工具)

前言 DBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具。 DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL、PostgreSQL、MariaDB、SQLite、Oracle、Db2、SQL Server、Sybase、MS Access、Teradata、Firebird、Derby 等等。 下载…

支付

支付权限配置类型 来源 备注虚拟支付 微信后台开通 必需微信支付 微信后台开通 必需虚拟支付设置:官方文档链接:https://developers.weixin.qq.com/minigame/dev/guide/open-ability/virtual-payment/virtual-payment2.html一:进入微信后台,进入虚拟支付模块,看到右上角出…

五款实用GIS工具箱推荐,帮你轻松搞定各类GIS问题

1. GISBox 简介:GISBox 是一款集成化的GIS工具箱,能够进行GIS影像、地形和倾斜摄影的实时编辑、格式转换和服务发布。它支持多种GIS文件格式的转换,并且允许用户免费发布影像、地形和倾斜摄影服务。 优点:免费服务发布:支持 3DTiles、Terrain、WMTS 等协议发布,且不收取费…

Rider设置

自动换行强制换行&换行线 (设置成0)设置自定义背景色保存自动格式化代码格式化可以自定义,格式化范围也可以自定义