【自动化测试】----Java的单元测试工具Junit5

目录

  1. 支持Java的最低版本为8
  2. 在pom.xml添加依赖
  3. Junit提供的注解功能
  4.  断言 Assertion类提供的一些方法
  5. 测试用例执行顺序 (为了预防测试用例执行顺序错误)
  6. 参数化 (假设登陆操作,用户名和密码很多,尽可能通过一个测试用例用一组参数来模拟用户登陆)
  7. 测试套件 (适用于跑测试类里面所有的测试用例)

  • 此测试工具支持Java的最低版本为8

  • 在pom.xml添加依赖

 <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
  • Junit提供的注解功能

  1. @Test(表示方法是测试方法,可以自己去执行不需要调用,执行这个当前类时,会自动执行该类下所有带@Test注解的用例)
import org.junit.jupiter.api.Test;
public class Test1 {
    @Test
     void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印  aaa   bbb   ccc
  1. @BeforeEach(当前方法需要在每一个用例执行前执行一次)
public class Test1 {
    @BeforeEach
     void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}

打印  aaa  bbb  aaa  ccc
  1. @BeforeAll(需要静态方法,当前方法需要在所有用例执行前执行一次)
public class Test1 {
    @BeforeAll
    @Test
     static void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印: aaa  bbb  ccc
  1. @AfterEach(前方法需要在每一个用例执行后执行一次)
public class Test1 {
    @Test
     static void test1(){
         System.out.println("aaa");
    }
    @AfterEach
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印:ccc   bbb
  1. @AfterAll(需要静态方法,当前方法需要在当前类下所有用例之前执行一次)
public class Test1 {
    @AfterAll
    @Test
     static void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印:bbb  ccc  aaa
  •  断言 Assertion类提供的一些方法

  • assertEquals---匹配
 void dili1(){
        //启动驱动
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        ChromeDriver driver=new ChromeDriver(options);
        //输入网址
        driver.get("http://baidu.com");
        //打印百度一下
        String ret=driver.findElement(By.cssSelector("#su")).getAttribute("value");
        //打印文本
        System.out.println(ret);
        //断言一下
        Assertions.assertEquals("百度两下",ret);
        //退出程序
        driver.quit();
    }
、、此时程序会报错,与我们断言的不一致
  • assertNotEquals---不匹配
 Assertions.assertNotEquals("百度两下",ret);
  • assertTrue---结果为真
  • assertFalse---结果为假
 Assertions.assertTrue(1==0);
  • assertNull---结果为空
  • assertNotNull---结果不为空
 Assertions.assertNull("","你好");
  • 测试用例执行顺序 (为了预防测试用例执行顺序错误)

注意:order只代表用例的执行顺序,Test注解不可以删除 ,否则程序不能执行

//写在类前面,代表当前类所有方法通过order注解来排序
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Test2 {
    //用例的执行顺序
    @Order(2)
    @Test
    void logintest(){
        System.out.println("logintest");
    }
    @Order(1)
    @Test
    void indextest(){
        System.out.println("indextest");
    }
    @Order(3)
    @Test
    void edittest(){
        System.out.println("edittest");
    }
}
  • 参数化 (假设登陆操作,用户名和密码很多,尽可能通过一个测试用例用一组参数来模拟用户登陆)

  • 一般使用参数化注解就不能用@Test注解了
  • 单参数,首先要声明方法为参数化方法@ParameterizedTest

  

    @ParameterizedTest
    @ValueSource(strings = {"luncy,maty"})
    void single(String name){
        System.out.println(name);
    }
  • 多参数
@ParameterizedTest
    @CsvSource({"lili,123434","xiaohau,22334","12233,xiaojia"})
    void many(String name,String age){
        System.out.println("name: "+name+"age: "+age);
    }
  • 文件上传参数(从外部csv去读取)

  • 动态参数方法来提供数据源

  • 测试套件 (适用于跑测试类里面所有的测试用例)

  • 先用@Suite来标注是测试套件

  • 用@SelectClasses来指定要跑哪个测试类(注意这个测试类里面的方法都要加上@Test注解)

  • 选择包名来执行对应的测试用例,(该包下的所有测试类命名必须以Test/Tests结尾)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot+vue实现excel导出

后端 导入pom依赖 <dependency>x<groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.2.0</version> </dependency> Entity实体类 这里以User为例&#xff0c;可按照自己实际…

【leetcode题解C++】450.删除二叉搜索树中的节点 and 669.修剪二叉搜索树 and 108.将有序数组转换为二叉搜索树

450. 删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可…

032-安全开发-JavaEE应用Servlet路由技术JDBCMybatis数据库生命周期

032-安全开发-JavaEE应用&Servlet路由技术&JDBC&Mybatis数据库&生命周期 #知识点&#xff1a; 1、JavaEE-HTTP-Servlet技术 2、JavaEE-数据库-JDBC&Mybatis 演示案例&#xff1a; ➢JavaEE-HTTP-Servlet&路由&周期 ➢JavaEE-数据库-JDBC&Mybat…

SDL库的下载与配置(Visual Studio )2024/2/4更新

一.SDL的下载 下载链接 二.SDL的环境配置 解压以后放在中文路径下 不会添加环境变量自行搜索&#xff08;比较简单网上教程很多&#xff09; 下面进行编译器的配置 复制这段内容 x64\SDL2main.lib x64\SDL2.lib将这段代码放进去运行一下 #include <SDL.h>int main(int…

职业性格测试在求职应聘跳槽中的应用

人的性格总是千奇百怪&#xff0c;有的人总是想迎接挑战&#xff0c;超越自己&#xff0c;不停的奔着高处走&#xff0c;然而有的人总是喜欢随遇而安&#xff0c;踏踏实实一辈子&#xff0c;有份安稳的工作&#xff0c;有吃有喝就好。那么对于哪些喜欢迎接挑战&#xff0c;但又…

算法学习——华为机考题库10(HJ64 - HJ67)

算法学习——华为机考题库10&#xff08;HJ64 - HJ70&#xff09; HJ64 MP3光标位置 描述 MP3 Player因为屏幕较小&#xff0c;显示歌曲列表的时候每屏只能显示几首歌曲&#xff0c;用户要通过上下键才能浏览所有的歌曲。为了简化处理&#xff0c;假设每屏只能显示4首歌曲&a…

挑战杯 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于python 机器视觉 的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 &#x1f9ff; 更多资…

LLaVA:GPT-4V(ision) 的新开源替代品

LLaVA&#xff1a;GPT-4V(ision) 的新开源替代品。 LLaVA &#xff08;https://llava-vl.github.io/&#xff0c;是 Large Language 和Visual A ssistant的缩写&#xff09;。它是一种很有前景的开源生成式 AI 模型&#xff0c;它复制了 OpenAI GPT-4 在与图像对话方面的一些功…

SpringCloud-生产者和消费者

一、生产者和消费者的定义 在 Spring Cloud 中&#xff0c;术语 "生产者" 和 "消费者" 用于描述微服务架构中的两种基本角色。 角色定义生产者 Provider生产者是提供具体服务或功能的模块。它将业务逻辑封装成服务&#xff0c;供其他模块调用。生产者向服…

如何构建多种系统架构支持的 Docker 镜像

如何构建多种系统架构支持的 Docker 镜像 1.概述2.解决方案3.使用manifest案例 1.概述 我们知道使用镜像创建一个容器&#xff0c;该镜像必须与 Docker 宿主机系统架构一致&#xff0c;例如 Linux x86_64 架构的系统中只能使用 Linux x86_64 的镜像创建容器 例如我们在 Linux…

python Flask 写一个简易的 web 端上传文件程序 (附demo)

python Flask 写一个简易的 web 端上传文件程序 &#xff08;附demo&#xff09; 需求介绍核心代码&#xff1a; 文件结构前端文件后端文件 完整代码演示 需求 在当今数字化时代&#xff0c;文件上传需求日益普遍。无论是个人还是企业&#xff0c;都可能需要实现文件上传功能。…

商业智能(BI)数据分析、挖掘概念

商业智能&#xff08;BI&#xff09;数据分析挖掘概念 一、商业智能&#xff08;BI&#xff09;数据分析挖掘概念 数据挖掘目前在各类企业和机构中蓬勃发展。因此我们制作了一份此领域常见术语总结。 1.分析型客户关系管理&#xff08;Analytical CRM/aCRM 用于支持决策&…

MySQL集群 1主1从 主从复制(原理 及配置命令)

CSDN 成就一亿技术人&#xff01; 今天分享一期 MySQL集群方案&#xff1a;主从集群 也是最常用的一种 CSDN 成就一亿技术人&#xff01; 目录 使用主从复制的原因&#xff08;优点&#xff09; 主从复制的过程&#xff08;原理&#xff09; 了解两大线程&#xff08; I/O…

day 19 (进阶)

一 首先 昨日内容回顾 思维导图&#xff1a;&#xff08;日更附 养成习惯 加油&#xff09; 补充Linux思维导图 衔接一下之前学过的 二 课堂知识提炼 练习&#xff1a;统计文件行数 想查看是否正确就用 grep -c “文件名” 来看 会输出结果 练习&#xff1a;把file.c里面的…

数据包跟踪器-实施 DHCPv4

实验大纲 第 1 部分&#xff1a;把路由器配置为 DHCP 服务器 步骤 1&#xff1a;配置要排除在外的 IPv4 地址 步骤 2&#xff1a;在 R2 上 给 R1 LAN 创建一个 DHCP 池 步骤 3&#xff1a;在 R2 上 给 R3 LAN 创建一个 DHCP 池 第 2 部分&#xff1a;配置 DHCP 中继 步骤…

爱上算法:每日算法(24-2月4号)

&#x1f31f;坚持每日刷算法&#xff0c;&#x1f603;将其变为习惯&#x1f91b;让我们一起坚持吧&#x1f4aa; 文章目录 [232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/)思路CodeJavaC 复杂度 [225. 用队列实现栈](https://leetcode.cn/…

Maven配置笔记

1、下载Maven 在Maven的官网即可下载&#xff0c;点击访问Apache Maven。 2、配置环境变量 chcp 65001 echo off set mvnhomeE:\apache-maven-3.8.4 rem LPY echo. echo ************************************************************ echo * …

手写分布式存储系统v0.3版本

引言 承接 手写分布式存储系统v0.2版本 &#xff0c;今天开始新的迭代开发。主要实现 服务发现功能 一、什么是服务发现 由于咱们的服务是分布式的&#xff0c;那从服务管理的角度来看肯定是要有一个机制来知道具体都有哪些实例可以提供服务。举个例子就是&#xff0c;张三家…

ConcurrentHashMap的使用以及源码分析

一、ConcurrentHashMap&#xff1f; 1.1 存储结构 ConcurrentHashMap是线程安全的HashMap ConcurrentHashMap在JDK1.8中是以CASsynchronized实现的线程安全 CAS&#xff1a;在没有hash冲突时&#xff08;Node要放在数组上时&#xff09; synchronized&#xff1a;在出现ha…

Linux实验记录:使用BIND提供域名解析服务

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 为了降低用户访问网络资源的门槛&am…