Java单元测试介绍

news2025/7/11 18:29:02

文章目录

  • 单元测试
    • 单元测试基本介绍
    • 单元测试快速入门
    • 单元测试常用注解

单元测试

单元测试基本介绍

单元测试:

单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性。

目前测试方法是怎么进行的, 存在什么问题?

目前我们只有在main方法调用其他方法进行测试,如果一个方法的测试失败了,其他方法测试会受到影响。

无法得到测试的结果报告,需要程序员自己去观察测试是否成功。

无法实现自动化测试。

在这里插入图片描述

JUnit单元测试框架:

JUnit是使用Java语言实现的单元测试框架,它是开源的,Java开发者都应当学习并使用JUnit编写单元测试。

此外,几乎所有的IDE工具都集成了JUnit,这样我们就可以直接在IDE中编写并运行JUnit测试,JUnit目前最新版本是5。

JUnit优点:

JUnit可以灵活的选择执行哪些测试方法,可以一键执行全部测试方法。

JUnit可以生成全部方法的测试报告。

单元测试中的某个方法测试失败了,不会影响其他测试方法的测试。

例如下图, 测试失败会标为红色, 测试成功就是绿色

在这里插入图片描述

单元测试快速入门

目标

使用单元测试进行业务方法预期结果、正确性测试的快速入门

使用步骤

将JUnit的jar包导入到项目中

  • IDEA通常整合好了Junit框架,一般不需要导入。
  • 如果IDEA没有整合好,需要自己手工导入如下2个JUnit的jar包到模块

编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法。

在测试方法上使用@Test注解:标注该方法是一个测试方法

在测试方法中完成被测试方法的预期正确性测试。

选中测试方法,选择“JUnit运行” ,如果测试良好则是绿色;如果测试失败,则是红色

演示代码:

首先创建一个UserService类, 在UserService类中创建两个方法用来测试, 并特意编写一个有错误的方法

public class UserService {
    /**
        测试方法一
     */
    public String loginName(String userName, String passWord) {
        if ("admin".equals(userName) && "123456".equals(passWord)) {
            return "登录成功";
        } else {
            return "账号或者密码错误";
        }
    }

    /**
        测试方法二
     */
    public void selectName() {
        System.out.println(10 / 0); // 特意编写的错误代码
        System.out.println("查询成功!");
    }
}

编写测试类和测试方法对方法进行测试

/**
    编写测试类
 */
public class TestUserService {
    /**
        测试方法:
        1. 必须是公开的, 无返回值, 无参数
        2. 必须使用@Test注解对测试方法标记
     */
    @Test
    public void testLoginName() {
        UserService userService = new UserService();
        userService.loginName("admin", "123456");
    }
    @Test
    public void testSelectName() {
        UserService userService = new UserService();
        userService.selectName();
    }
}

单元测试常用注解

Junit常用注解-Junit 4.xxxx版本(了解)

注解说明
@Test测试方法
@Before用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。
@After用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。
@BeforeClass用来修饰静态方法,该方法会在所有测试方法之前只执行一次。
@AfterClass用来修饰静态方法,该方法会在所有测试方法之后只执行一次。

开始之前执行的方法: 例如初始化资源的方法。

执行完之后的方法: 例如释放资源。

Junit常用注解-Junit 5.xxxx版本(了解)

注解说明
@Test测试方法
@BeforeEach用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。
@AfterEach用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。
@BeforeAll用来修饰静态方法,该方法会在所有测试方法之前只执行一次。
@AfterAll用来修饰静态方法,该方法会在所有测试方法之后只执行一次。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Error: EPERM: operation not permitted, mkdir ‘D:\software\nodejs\node_cache\_cacach两种解决办法

目录 报错情况:operation not permitted, mkdir ‘D:\software\nodejs\node_cache\_cacach 解决办法: 第一种:选择管理员身份运行命令行 第二种:node安装目录下设置users用户完全控制权限 报错情况:operation not …

电子工程师必须掌握的硬件测试仪器,你确定你都掌握了?

目录示波器示例1:测量示波器自带的标准方波信号输出表笔认识屏幕刻度认识波形上下/左右移动上下/左右刻度参数调整通道1的功能界面捕获信号设置Menu菜单触发方式触发电平Cursor按钮捕捉波形HLEP按钮参考资料频谱分析仪器信号发生器示波器 示例1:测量示波…

Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心

目录专栏导读一、什么是Nacos?二、注册中心演变及其设计思想1、RestTemplate调用远程服务2、通过Nginx维护服务列表(upStream)3、通过Nacos实现注册中心4、心跳版Nacos三、Nacos Discovery四、Nacos核心功能1、服务注册2、服务心跳3、服务同步…

【Jetpack】Jetpack 简介 ( 官方架构设计标准 | Jetpack 组成套件 | Jetpack架构 | Jetpack 的存在意义 | AndroidX 与 Jetpack 的关系 )

文章目录一、Google 官方推出的架构设计标准 Jetpack二、Jetpack 组成套件三、Jetpack 架构四、Jetpack 的存在意义1、提高开发效率2、最佳架构方案3、消除样本代码4、设备系统兼容性5、改善应用性能6、测试支持五、AndroidX 与 Jetpack 的关系一、Google 官方推出的架构设计标…

Termux安装完整版Linux(Ubuntu)详细步骤

一、Termux 1.Termux简介 Termux是 Android 平台上的一个终端模拟器,之所以称它为“模拟器”而非“虚拟机”,是因为它并非像 PC 端的 VirtualBox 等虚拟机软件那样,在宿主机中虚拟出一个完全独立且完整的系统环境,而只是提供一个…

MyBatis案例 | 使用映射配置文件实现CRUD操作——动态SQL优化条件查询

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&…

面试官:如何进行 JVM 调优(附真实案例)

前言 面试官:在工作中做过 JVM 调优吗?讲讲做过哪些 JVM 调优? 我一个QPS不到10的项目,上次问我缓存穿透缓存雪崩,这次问我 JVM 调优,我是真滴难。 不过大家别慌,热心的我给大家找来了几个满分…

一文学会IDEA中的Maven集成与创建(详细教程)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

‘conda‘不是内部或外部命令,也不是可运行的程序或批处理文件。

Anaconda环境搭建常见问题 conda不是内部或外部命令,也不是可运行的程序或批处理文件。 解决方案:配置环境变量 1.找到Anaconda Nvaigator单机右键 2.更多 3.打开文件所在位置 4.继续Anaconda Nvaigator单机右键,更多,选择文件…

Xilinx XDMA驱动代码分析及用法

Xilinx XDMA驱动代码分析及用法 先简单的介绍一下,赛灵思的XDMA的驱动是用于做什么的、他的主要功能就类似与网卡pcie接口的网卡驱动、用于控制主机与fpga设备进行pcie的通讯。通讯的主要方式是设备文件的读写,这里不清楚的同学可以看一下我上一篇文章。…

IDEA连接MySQL数据库并执行SQL语句使用数据

文章目录一、IDEA连接MySQL数据库(一)首先新建普通Java项目(二)连接数据库1、点击右侧DataBase2、点击加号,找到MySQL,添加数据库3、输入用户名和密码,点击**Test Connection**4、显示连接成功&…

深度分析| 数据防泄露技术再次“翻红”的思考与建议

此文章由天空卫士供稿 01、数据防泄露的定义 数据防泄露(Data leakage prevention,DLP)是指通过一定的技术和管理,防止组织内敏感数据或信息资产,违反安全约束而丧失组织控制、破坏数据机密性的策略和措施。数据防泄…

【云原生】裸金属架构之服务器安装VMWare ESXI虚拟化平台详细流程

??作者简介:大家好,我是,运维领域创作者,??阿里云ACE认证高级工程师?? 个人主页: ??支持我:点赞??收藏留言?? ??格言:你未必出类拔萃,但一定与众不同!??…

[SSD4] 固态硬盘主控功能_SSD主控品牌

固态硬盘(Solid State Drives),简称SSD。它是一种电脑存储设备,由闪存(FLASH)、 闪存控制器、高速缓存(DRAM)组成。这是是固态硬盘的三个基本部件,对性能有关键影响。 了解一颗固态硬盘首先要从主控入手,主控对于固态硬盘的影响丝毫不亚于闪存。那么主控芯片对于固态硬盘…

来了!Python 官方发布了整套的中文PDF 文档(共27本)

1. 《Python中文指南》 学 Python 最好的学习资料永远是 Python 官方文档,可惜现在的官方文档大都是英文,虽然有中文的翻译版了,但是进度实在堪忧。 为了照顾英文不好的同学,我自己写了一份 面向零基础的朋友 的在线 Python 文档…

Stable diffusion安装踩坑(winMaciOS)

今天Apple官方支持了这个库,所以特意下载下来试试看,效果还不错,M芯片在深度学习领域第一次给人惊喜了。 https://machinelearning.apple.com/research/stable-diffusion-coreml-apple-silicon 1.win使用 安装 分享一下一个有意思的库的安…

算法的效率——时间复杂度和空间复杂度

文章目录1. 算法效率1.1 什么是算法1.2 算法的好坏2. 时间复杂度2.1 什么是时间复杂度2.2 时间复杂度的计算方法2.3 大O的渐进表示法2.4 常见时间复杂度计算举例3. 空间复杂度4. 常见复杂度对比1. 算法效率 1.1 什么是算法 目前普遍认可对算法的定义是:算法是解决…

通过CSS,H5,JavaScript实现表格表单的随机选择,和简单的随机点名。

目录 一、表格表单的随机选择 效果展示(表单内容可以根据自己需要进行修改) 1.H5的布局 第一步: 第二步: 2.CSS布局 3.JS的布局 第一步: 第二步: 第三步: 二、简单的随机点名 效果展…

软件测试简历项目经验怎么写,没有项目经验?

怎么办?只能接受低薪工作吗?No No No。本文就教大家如何解决这个问题。 为了帮助大家彻底解决“没有项目”这个拦路虎,接下来文章将从以下几个方面进行展开: 1、应该去哪找项目? 2、在众多的项目中,该怎么…

【AI作画】使用stable-diffusion-webui搭建AI作画平台

一、安装配置Anaconda 进入官网下载安装包https://www.anaconda.com/并安装,然后将Anaconda配置到环境变量中。 打开命令行,依次通过如下命令创建Python运行虚拟环境。 conda env create novelai python3.10.6E:\workspace\02_Python\novalai>conda…