当前位置: 首页 > news >正文

selenium自动化测试之Junit

1. 常用的注解

将junit的索引添加到pom文件:

   <!-- 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><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</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><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.9.1</version><scope>test</scope></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>

        文件讲解:

1.1. @Test

        使用该注解表示当前方法是一个测试用例;

        使用@Test注解的代码如下所示:

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

        运行测试用例之后的结果如下:

1.2. @BeforeAll,@AfterAll

public class JunitTest {@Testvoid  Test01() {System.out.println("-------这是第一个测试用例---------");}@Testvoid  Test02() {System.out.println("-------这是第二个测试用例---------");}@BeforeAllstatic void Start(){System.out.println("------------开始测试------------");}@AfterAllstatic void End(){System.out.println("------------结束测试------------");}
}

        测试用例结果如下所示:

        beforeAll在Test修饰的方法之前运行,AfterAll在Test修饰方法之后运行; 

1.3. @BeforeEach,@AfterEach

public class JunitTest {@Testvoid  Test01() {System.out.println("-------这是第一个测试用例---------");}@Testvoid  Test02() {System.out.println("-------这是第二个测试用例---------");}@BeforeEachvoid Startv1(){System.out.println("------------开始执行一条测试用例------------");}@AfterEachvoid Endv1(){System.out.println("------------一条测试用例执行结束------------");}
}

        测试结果如下:

        我们在进行测试的时候,如果每一个测试用例在测试开始和结束之后都需要进行操作,就要使用@xxxeach的注解;如果测试的时候所有的测试用例在开始和结束之后只需要进行一次操作。就使用@xxxall的注解;

2. 测试用例顺序指定

        指定顺序的注解如下所示:

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {@Order(2)@Testvoid  Test01() {System.out.println("-------这是第一个测试用例---------");}@Order(1)@Testvoid  Test02() {System.out.println("-------这是第二个测试用例---------");}@BeforeEachvoid Startv1(){System.out.println("------------开始执行一条测试用例------------");}@AfterEachvoid Endv1(){System.out.println("------------一条测试用例执行结束------------");}
}

        我们要在类名和方法名前分别添加相对应的注解;

        测试结果如下所示:

3. 参数化

3.1 单参数

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

测试结果如下所示:

        单参数的局限性: 只能接受一种类型的参数,对应的test03()方法只能接受一个参数x;

3.2 多参数

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

        测试结果如下所示:

        注意事项:当写了上面代码中的两个注解之后,如果在写@test注解,我们的测试用例在运行的过程中就会报错,显示没有参数被注册;主要是因为@test注解的存在导致多参数注解在调用时被忽略;

        错误代码和结果如下所示:

    //多参数@Test@ParameterizedTest@CsvSource({"'沈梦瑶',22"})void Test04(String name,int age){System.out.println(name + "今年" + age + "岁");}

        其结果如下所示:

        多参数读取文件中的数据,并进行操作;建议将文件创建到resource中,如下所示:

       

         代码如下:

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

         测试结果如下:

3.3 通过方法生成参数

  public static Stream<Arguments> Generate() {return Stream.of(Arguments.arguments("沈梦瑶",22),Arguments.arguments("袁一琦",18));}// 通过方法生成测试数据@ParameterizedTest@MethodSource("Generate")void Test06(String name, int age) {System.out.println("姓名:" + name + "年龄:" + age);}

        测试结果如下所示:

4. 测试套件管理

@suite

@Suite
//通过class运行测试用例
@SelectClasses({JunitTest1.class,JunitTest.class})
//通过包运行测试用例
@SelectPackages(value = {"example"})
public class RunTest {
}

结果如下:

ps:本次的内容就到这里了,如果对你有所帮助的话就请一键三连哦!!!

封面截图来自刘姝贤的毕业公演的pv;

url:【流水线的流水账】江西几日游_哔哩哔哩_bilibili

相关文章:

selenium自动化测试之Junit

1. 常用的注解 将junit的索引添加到pom文件&#xff1a; <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId&…...

【氮化镓】基于氮化镓的互补逻辑集成电路[Nature Electronics]

【摘要】本文介绍了一种基于氮化镓(GaN)的互补金属氧化物半导体(CMOS)逻辑集成电路,该电路利用氧等离子体处理技术实现了增强型n沟道和p沟道GaN场效应晶体管的单片集成。研究者们展示了包括反相器、与非门、或非门和传输门在内的基本逻辑门,以及多级逻辑电路,如锁存器和…...

Linux之如何找回 root 密码?

1、启动系统&#xff0c;进入开界面&#xff0c;在界面中按“e"进入编辑界面 2、进入编辑界面&#xff0c;使用键盘上的上下键把光标往下移动&#xff0c;找到以”Linux16“开通内容所在的行数&#xff0c;在行的最后面输入&#xff1a;init/bin/sh 3、输入完成后&…...

后端参数校验方式

1. 使用Hibernate Validator进行注解校验 这是Java中最常用的参数校验方式&#xff0c;基于JSR 303/JSR 380规范的实现&#xff0c;通常结合Valid或Validated注解进行参数校验。 使用步骤&#xff1a; 添加依赖&#xff08;如果使用Spring Boot&#xff0c;通常已经内置了Hi…...

访问控制列表(课内实验)

实验2&#xff1a;访问控制列表 实验目的及要求&#xff1a; 通过实验&#xff0c;进一步的理解标准ACL与扩展ACL的工作原理及执行过程。理解通配符的概念&#xff0c;熟练掌握标准ACL与扩展ACL的配置指令&#xff0c;掌握将访问控制列表应用VTY线路上&#xff0c;并且能够判断…...

处理Java内存溢出问题(java.lang.OutOfMemoryError):增加JVM堆内存与调优

处理Java内存溢出问题&#xff08;java.lang.OutOfMemoryError&#xff09;&#xff1a;增加JVM堆内存与调优 在进行压力测试时&#xff0c;遇到java.lang.OutOfMemoryError: Java heap space错误或者nginx报错no live upstreams while connecting to upstream通常意味着应用的…...

数据分析库Pandas

一、认识Pandas数据分析库 Pandas是一个功能强大的数据分析库&#xff0c;它提供了丰富的数据结构和函数来处理和分析表格数据。在处理类似您提供的Excel文件时&#xff0c;首先需要导入Pandas库并读取数据&#xff0c;然后进行数据清洗和预处理&#xff0c;最后进行数据分析和…...

nginx做负载均衡的策略有哪些和模块

文章目录 策略模块 策略 轮询&#xff1a;轮询是Nginx默认的负载均衡策略&#xff0c;每个请求会按时间顺序分配到不同的后端服务器。这种方式适用于服务器配置相当且无状态的服务场景。加权轮询&#xff1a;在轮询的基础上&#xff0c;通过设置权重来调整不同服务器处理请求的…...

基于SSM社区医院预约转诊管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…...

Android适配器更改,ListView未收到通知解析

只需要在每次适配器发生变化时&#xff0c;调用函数adapter.notifyDataSetChanged(); 其中的adapter是适配器名。 需要说明的适配器对应的数组&#xff1a;List<String>也是适配器的一部分。 如&#xff1a;以下代码中的lists数组 List<T> lists new ArrayLis…...

ubuntu18.04系统中图形化界面

一、Ubuntu 18.04 中&#xff0c;使用 GDM 作为默认的图形用户界面&#xff08;GUI&#xff09;管理器。GDM 是 GNOME Display Manager 的缩写&#xff0c;它是用于 Ubuntu 的显示管理器&#xff0c;负责处理登录和会话管理。 通过命令行重启 Ubuntu 18.04 上的图形界面服务&am…...

深入Semantic Kernel:插件开发与实践应用(进阶篇)

文章目录 一、引言二、开发Semantic Kernel插件三、实战3.1 时间信息插件3.2 小部件工厂插件3.3 初始化Semantic Kernel实例3.4 四个实战示例3.4.1 模型幻觉3.4.2 给模型提供时间信息3.4.3 AI自动调用函数3.4.4 AI自动调用和使用枚举 四、结论 一、引言 在上一篇入门文章《探索…...

基于SpringBoot+Vue+Uniapp的植物园管理小程序系统(2024最新,源码+文档+远程部署+讲解视频等)

3. 论文参考 4. 项目运行截图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring …...

2024zzuacm新生选拔赛第一场

2024zzuacm新生选拔赛第一场https://ac.nowcoder.com/acm/contest/92409 python代码源自我有异议症QAQ A - 降智视频 题意 起初有n个数都在丁丁手中&#xff0c;进行如下操作k次&#xff1a; 豆豆从丁丁手中拿走标号为奇数的数。对丁丁的其他的数进行重新标号。 问进行k次…...

IP地址如何支持远程办公?

由于当今社会经济的飞速发展&#xff0c;各个方向的业务都不免接触到跨省、跨市以及跨国办公的需要&#xff0c;随之而来的远程操作的不方便&#xff0c;加载缓慢&#xff0c;传输文件时间过长等困难&#xff0c;如何在万里之外实现远程办公呢&#xff1f;我们以以下几点进行阐…...

spring 集合注入格式

数组 List Set Map properties 案例 package org.example.dao.impl;import org.example.dao.BookDao;import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set;public class BookDaoImpl implements BookDao {private int[] array;p…...

基于Zabbix进行服务器运行情况监测

文章目录 引言I Zabbix主要构成下载并安装Zabbix被监控主机安装zabbix agent创建被监控主机报警设置II 常见问题cannot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?)重置 Zabbix Web 界面密码Zabbix agent i…...

Github优质项目推荐 - 第五期

文章目录 Github优质项目推荐 - 第五期一、【localsend】&#xff0c;47.5k stars - 附近设备文件互传二、【Pake】&#xff0c;29.9k stars - 网页变成桌面应用三、【laravel-crm】&#xff0c;10.7k stars - CRM 解决方案四、【localstack】&#xff0c;55.7k stars - 本地 A…...

Java_ EE (网络编程)

网络编程基本概念: 计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。从其…...

Qt子线程运行报错error: undefined reference to `excelThread::conversionFinished()‘

如标题所示&#xff0c;笔者试图在子线程中使用基于GUI的对话框&#xff0c;而基于GUI的对话框需要在主线程&#xff08;也称为GUI线程&#xff09;中运行&#xff0c;在子线程中不能直接用&#xff0c;需要使用信号与槽机制&#xff0c;将请求发送到主线程&#xff0c;然后在主…...

出海营销决战指南:从“流量过客”到“私域常客”的全局地图

2026 全球出海营销日历&#xff1a;如何在关键节点实现社媒私域流量的指数级增长&#xff1f;2026年&#xff0c;出海战场规则已变。粗放投放的红利耗尽&#xff0c;碎片化的渠道、敏感的风控与难以逾越的文化沟壑&#xff0c;正让每一分营销预算的效能急剧衰减。节点依旧汹涌&…...

极简安装方案:树莓派部署OpenClaw轻量版对接云端Qwen3-32B

极简安装方案&#xff1a;树莓派部署OpenClaw轻量版对接云端Qwen3-32B 1. 为什么选择树莓派OpenClaw轻量版&#xff1f; 去年夏天&#xff0c;我突发奇想&#xff1a;能不能用树莓派做个24小时在线的AI管家&#xff1f;既能控制智能家居&#xff0c;又能处理简单办公任务。但…...

开源AI助手竟能自主建频道、做视频?李宏毅深度解析“小龙虾”的神秘工作原理!

最近全网爆火的「养龙虾」到底是什么&#xff1f;为什么一个开源的 AI 助理项目&#xff0c;能让 AI 自己创建 YouTube 频道、自己做教学视频、24 小时自主干活&#xff1f; 台大李宏毅老师的这堂《解剖小龙虾 — 以 OpenClaw 为例介绍 AI Agent 的运作原理》&#xff0c;用最通…...

2026年3月27日NSSCTF之[SWPUCTF 2021 新生赛]ez_unserialize

[SWPUCTF 2021 新生赛]ez_unserialize 开启环境&#xff0c;进入并查看&#xff0c;可以看到一个动图&#xff0c;选择查看网页源码&#xff0c;得到 看到有隐藏信息&#xff0c;根据隐藏信息可以猜测&#xff0c;可以利用robots协议查看相关信息&#xff0c;访问得到 可以得…...

ArcGIS Desktop绘图工具条实战:从基础图形到专业地图注记的进阶指南

1. ArcGIS绘图工具条初探&#xff1a;你的地图设计起点 第一次打开ArcGIS Desktop的绘图工具条时&#xff0c;我就像拿到了一盒全新的彩色铅笔。这个看似简单的工具条&#xff0c;实际上包含了从基础绘图到专业地图注记的全套功能。绘图工具条位于软件界面顶部&#xff0c;右键…...

IntelliJ Conf:JetBrains Koog Java原生AI Agent框架实战

文章目录前言&#xff1a;Java程序员的"Agent焦虑"终于有解了认识Koog&#xff1a;不是又一个LangChain的Java版环境准备&#xff1a;5分钟让项目跑起来实战&#xff1a;从Hello World到智能客服第一步&#xff1a;定义工具&#xff08;Tool&#xff09;第二步&#…...

【AI+教育】告别“硬啃”长文,它把文档直接变成你的专属视频课

在这个信息大爆炸的时代,我们最不缺的就是资料:网盘里屯满的行业报告、收藏了却从未打开的学术论文、买来盖泡面的大部头教材……知识就在那里,但“学进去”实在太难了。 秘塔推出的“今天学点啥”,就是为了解决这个痛点而生的。它的核心逻辑非常简单粗暴:你把看不进去的文…...

Undecimus技术解析与实战指南:iOS 11-12.4设备越狱完全攻略

Undecimus技术解析与实战指南&#xff1a;iOS 11-12.4设备越狱完全攻略 【免费下载链接】Undecimus unc0ver jailbreak for iOS 11.0 - 12.4 项目地址: https://gitcode.com/gh_mirrors/un/Undecimus Undecimus作为一款针对iOS 11.0至12.4系统的开源越狱工具&#xff0c…...

从零开始手搓一个xv6内核页表:跟着MIT 6.S081源码一步步理解虚拟内存初始化

从零构建xv6内核页表&#xff1a;深入解析RISC-V虚拟内存初始化实战 在MIT 6.S081操作系统的学习过程中&#xff0c;xv6作为教学用精简内核&#xff0c;其虚拟内存实现是理解现代计算机内存管理的关键。本文将带您从第一行代码开始&#xff0c;完整复现xv6内核页表的构建过程&…...

从Python转C++必看:C++20的starts_with/ends_with和Python有何不同?5个易错点详解

从Python转C必看&#xff1a;C20的starts_with/ends_with和Python有何不同&#xff1f;5个易错点详解 当你在Python中熟练使用startswith()和endswith()多年后&#xff0c;突然切换到C20的starts_with和ends_with&#xff0c;可能会觉得"这不就是换个语法吗&#xff1f;&q…...