软件测试教程 自动化测试之Junit框架

news2024/9/21 4:39:51

文章目录

  • 1. 什么是 Junit ?
  • 2. 常见的注解
    • 2.1 @Test
    • 2.2 @BeforeAll,@AfterAll
    • 2.3 @BeforeEach,@AfterEach
  • 3. 测试用例顺序指定
  • 4. 参数化
    • 4.1 单个参数
    • 4.2 多个参数
    • 4.3 通过方法生成
  • 5. 测试套件
  • 6. 断言
    • 6.1 断言相等
    • 6.2 断言不相等
    • 6.3 断言为空
    • 6.4 断言不为空

1. 什么是 Junit ?

Junit 是 Java 的单元测试框架


在 Java 项目中加入 Junit 依赖

		<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.1</version>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.9.1</version>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>

2. 常见的注解

2.1 @Test

  • @Test:表名当前的方法是一个测试用例
import org.junit.jupiter.api.Test;

public class JunitTest {
    @Test
    void Test01() {
        System.out.println("========这是第一个测试用例=======");
    }

    @Test
    void Test02() {
        System.out.println("========这是第二个测试用例=======");
    }
}

在这里插入图片描述

2.2 @BeforeAll,@AfterAll

  • @BeforeAll:当前 class 中所有测试用例执行之前自动执行
  • @AfterAll:当前 class 中所有测试用例执行结束之后自动执行
	@BeforeAll
    static void Start() {
        System.out.println("开始测试");
    }
    @AfterAll
    static void End() {
        System.out.println("结束测试");
    }

在这里插入图片描述

2.3 @BeforeEach,@AfterEach

  • @BeforeEach:当前 class 中每一个测试用例执行结束之前执行一次
  • @AfterEach:当前 class 中每一个测试用例执行结束之后执行一次
@BeforeEach
    void StartV1() {
        System.out.println("开始执行");
    }
    @AfterEach
    void EndV1() {
        System.out.println("执行结束");
    }

在这里插入图片描述

3. 测试用例顺序指定

  • @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    在这里插入图片描述
    在这里插入图片描述

4. 参数化

4.1 单个参数

	//单参数
    @ParameterizedTest
    @ValueSource(ints = {1,2,3,4})
    void Test03(int x) {
        System.out.println("接收参数是 x = " + x);
    }

单参数有它的弊端,只能接收一种类型的参数,对应的 Test 方法,只能接收一个参数

4.2 多个参数

	//多参数
    @ParameterizedTest
    @CsvSource({"'张三','18'"})
    void Test04(String name, int age) {
        System.out.println(name + "今年 " + age + " 岁");
    }

参数化对应的注解上面如果写了Test,测试用例就会执行两次
其中一次就会报错,因为 Test 和 方法结合,没有找到参数,就会报错


	//多参数,读取文件中的数据,进行操作
    @ParameterizedTest
    @CsvFileSource(resources = "test01.csv")
     void Test05(String name, int age) {
        System.out.println("name:" + name + ", age:" + age);
    }

在这里插入图片描述
在这里插入图片描述

4.3 通过方法生成

	public static Stream<Arguments> Generate() {
        return Stream.of(
                Arguments.arguments("张三", 13),
                Arguments.arguments("李四",14)
        );
    }
    
	//通过方法生成测试数据
    @ParameterizedTest
    @MethodSource("Generate")
    void Test06(String name, int age) {
        System.out.println("姓名:" + name + "年龄:" + age);
    }

在这里插入图片描述

5. 测试套件

  • @Suite

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

6. 断言

6.1 断言相等

//断言相等
    @Test
    void Test07() {
        int x = 10;
        int y = 20;
        Assertions.assertEquals(x, y);
    }

在这里插入图片描述

6.2 断言不相等

	//断言不相等
    @Test
    void Test07() {
        int x = 10;
        int y = 20;
        Assertions.assertNotEquals(x, y);
    }

在这里插入图片描述

6.3 断言为空

	//断言为空
    @Test
    void Test07() {
        int x = 10;
        int y = 20;
        String tmp = null;
        Assertions.assertNull(tmp);
    }

在这里插入图片描述

6.4 断言不为空

	//断言不为空
    @Test
    void Test07() {
        int x = 10;
        int y = 20;
        String tmp = null;
        Assertions.assertNotNull(tmp);
    }

在这里插入图片描述

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

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

相关文章

医疗器械经营许可证办理流程及申请流程有哪些?

1、证书内容差异&#xff1a; 1.医疗器械经营许可证应当载明许可证号码、法定代表人、负责人、住所、经营范围、仓库地址、发证部门、日期及有效期、公司名称等事项。 2.医疗器械生产经营管理注册证书应当载明编号、公司产品名称、法定代表人、住所、经营活动场所、业务发展方…

小程序云开发(十六):JavaScript基础

&#x1f517; 运行环境&#xff1a;小程序云开发 &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 &#x1f510;#### 防伪水印——左手の明天 ####&#x1f510; &#x1f497…

计算机网络:TCP篇

计网tcp部分面试总结 tcp报文格式&#xff1a; 序列号&#xff1a;通过SYN传给接收端&#xff0c;当SYN为1&#xff0c;表示请求建立连接&#xff0c;且设置序列号初值&#xff0c;后面没法送一次数据&#xff0c;就累加数据大小&#xff0c;保证包有序。 确认应答号&#x…

基于C/C++的easyx图形库教程

文章目录: 一&#xff1a;前言 二&#xff1a;窗口&#xff08;宽高 背景颜色 窗口标题 弹出对话框&#xff09; 三&#xff1a;图形绘制&#xff08;点 线 矩形 圆 椭圆&#xff09; 四&#xff1a;文字&#xff08;颜色 大小 背景 位置 打印 文字居中&#xff09; 五&a…

动态规划(算法竞赛、蓝桥杯)--单调队列优化绿色通道

1、B站视频链接&#xff1a;E45 单调队列优化DP 绿色通道_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N5e410; int n,tim,w[N],f[N],q[N];bool check(int m){int h1,t0;for(int i1; i<n; i){while(h<t && f[q[t]]>f[i-…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Line)

直线绘制组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Line(value?: {width?: string | number, height?: string | number}) 从API version 9开始&#xff0c;该接…

巧用眼精星一键批量识别营业执照为结构化Excel

在现代社会&#xff0c;数字化办公已成为企业管理的重要方式之一。而在处理营业执照等票证文件时&#xff0c;如何高效准确地进行识别和管理也显得尤为重要。眼精星票据识别系统作为一款优秀的OCR识别软件&#xff0c;为用户提供了便捷快速的解决方案。接下来&#xff0c;我们将…

Java安全基础 关键概念过关

Java安全基础 关键概念汇总 文章目录 Java安全基础 关键概念汇总前置知识1.构造器this以及包的使用2.继承3.重写/ 重载 / super4.多态5.区分和equals方法6.toString的使用7.Object的概念8.static,final,代码块static代码块final 9.动态代理10.类的动态加载1)类加载器含义&#…

SpringBoot2.7集成Swagger3

Swagger2已经在17年停止维护了&#xff0c;取而代之的是 Swagger3&#xff08;基于openApi3&#xff09;&#xff0c;所以新项目要尽量使用Swagger3. Open API OpenApi是业界真正的 api 文档标准&#xff0c;其是由 Swagger 来维护的&#xff0c;并被linux列为api标准&#x…

组建公司办公网络

一 认识网络传输介质的分类 网络传输介质主要分为有线传输介质和无线传输介质两大类&#xff0c;它们在网络建设和数据传输中扮演着至关重要的角色。下面是这两类传输介质的详细分类&#xff1a; 有线传输介质 双绞线&#xff08;Twisted Pair&#xff09;&#xff1a;这是最…

作业:基于udp的tftp文件传输实例

#include <head.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <errno.h>#define PORT 69 //服务器绑定的端口号 #define IP "192.168.1.107" //服务器的IP地址int do_download(i…

从WAF到WAAP的研究

对于需要保护Web应用程序和API的企业来说&#xff0c;从WAF到WAAP的转变已成为一种必然趋势。采用WAAP平台可以更为全面和高效地保护Web应用程序和API的安全&#xff0c;同时避免了高昂的维护成本和攻击绕过WAF的风险。 网络安全领域的发展趋势是从WAF到WAAP的转变。WAF作为传…

关系数据库标准语言SQL

1.SQL概述 1.1基本表&#xff08;Base table&#xff09; 实际存储在数据库中的表SQL中一个关系就对应一个基本表基本表可以有若干个索引基本表的集合组成关系模式&#xff0c;即全局概念模式&#xff08;数据的整体逻辑结构&#xff09; 1.2 存储文件 存储文件和相关索引组…

android 顺滑滑动嵌套布局

1. 背景 最近项目中用到了上面的布局&#xff0c;于是使用了scrollviewrecycleview&#xff0c;为了自适应高度&#xff0c;重写了recycleview&#xff0c;实现了高度自适应&#xff1a; public class CustomRecyclerView extends RecyclerView {public CustomRecyclerView(Non…

【氮化镓】利用Ga2O3缓冲层改善SiC衬底AlN/GaN/AlGaN HEMT器件性能

Micro and Nanostructures 189 (2024) 207815文献于阅读总结。 本文是关于使用SiC衬底AlN/GaN/AlGaN高电子迁移率晶体管&#xff08;HEMT&#xff09;的研究&#xff0c;特别是探讨了不同缓冲层对器件性能的影响&#xff0c;以应用于高速射频&#xff08;RF&#xff09;应用。…

MySQL—基本操作

1.创建数据库 ①CREATE DATABASE schooldb; --不进行检查和设置默认字符集 ②CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8; --进行检查和设置默认字符集 CREATE DATABASE 创建数据库 IF NOT EXISTS 意为当前数据库不存在 CHARSET 意为设置数据库字符集…

文物管理系统|基于SSM框架+ Mysql+Java+ B/S结构的文物管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

GitLab/Github从头开始配置秘钥

1、下载git安装包 CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?pathgit-for-windows/ 拉到页面最底部选择 点进文件夹下载32位或者64位的版本&#xff0c;我的是64位就选择64的版本进行安装 2、傻瓜式安装 3、在相应的文件夹右键选择 UserName为你的用…

青海200MW光伏项目 35kV开关站图像监控及安全警示系统

一、背景 随着我国新能源产业的快速发展&#xff0c;光伏发电作为清洁能源的重要组成部分&#xff0c;得到了国家政策的大力扶持。青海作为我国光伏资源丰富地区&#xff0c;吸引了众多光伏项目的投资建设。在此背景下&#xff0c;为提高光伏发电项目的运行效率和安全性能&…

深度学习实战模拟——softmax回归(图像识别并分类)

目录 1、数据集&#xff1a; 2、完整代码 1、数据集&#xff1a; 1.1 Fashion-MNIST是一个服装分类数据集&#xff0c;由10个类别的图像组成&#xff0c;分别为t-shirt&#xff08;T恤&#xff09;、trouser&#xff08;裤子&#xff09;、pullover&#xff08;套衫&#xf…