使用Junit框架,提高自动化测试效率

news2024/11/17 20:37:41

目录

1、Junit 是什么?

2、Junit 的用法

2.1、注解【@Test、@BeforeEach、@BeforeAll、@AfterEach、@AfterAll】

2.2、断言Assertion类

2.2.1、断言匹配/不匹配

2.2.2、断言结果为真/为假

2.2.3、断言结果为空/不为空

2.3、用例的执行顺序【order注解】

2.4、参数化

2.4.1、单参数:

 2.4.2、多参数

2.4.3、动态参数 

2.5、测试套件

2.5.1、指定类运行用例

2.5.2、指定包名来运行包下所有的用例


 

1、Junit 是什么?

        JUnit是一个Java语言的单元测试框架。

咱们在自动化测试中,只是浅浅借用了一下junit库中提供的一些方法


2、Junit 的用法

使用Junit,就需要导入依赖:

        <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>

 


2.1、注解【@Test、@BeforeEach、@BeforeAll、@AfterEach、@AfterAll】

@Test注解:标示方法为测试方法

代码:

package com;

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:龙宝
 * Date:2023-02-15
 * Time:18:22
 */
public class AutoTest {

    ChromeDriver driver = new ChromeDriver();
    @Test
    void test() throws InterruptedException {
        driver.get("https://www.baidu.com");
        driver.findElement(By.cssSelector("#kw")).sendKeys("aiurgag");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("#su")).click();

    }
}

当使用了@Test注解,即使我们没有main函数,也可以启动测试:

703d7e63389140fbb64585d925ef0f88.png 

 @BeforeEach:使用该注解的方法,在其他每一个用例执行之前,都会执行一次

ae9b15978d2843708793c3a83805356b.png

 @BeforeAll:使用该注解的方法,在其他用例之前只执行一遍:

 ec0fa7e5c05c482981f85029f02c09ee.png

 @AfterEach:使用该注解的方法,在其他每一个用例执行之后,都会执行一次

1cf4fd3ce24f42fe9a78ce9629f61615.png

  @AfterAll:使用该注解的方法,在其他用例之后只执行一遍:

328b2d5e1337443082ac6b32e6a1cff6.png

 


2.2、断言Assertion类

2.2.1、断言匹配/不匹配

 Assertions.assertEquals("百度1下",text);
 Assertions.assertNotEquals("bai",text);

d3889a8107e04dc6a069219fa648263e.png

2.2.2、断言结果为真/为假

一个为假,报错后,后面的就不会执行了

c5808a1c59ac4899a61ef5c9afe19b42.png

2.2.3、断言结果为空/不为空

        String s = null;
        Assertions.assertNull(s);
        Assertions.assertNotNull("afawa");

773f17595146496abfe2a0c66f0b1ec1.png

 


2.3、用例的执行顺序【order注解】

代码的顺序不一定是代码的执行顺序:

6d93a12cbd114268babf37cb5c2e6b38.png

 通过order注解来排序

7f7b5daf2e1a4aa9a534476a4800b187.png

 


2.4、参数化

尽可能的通过一个用例,多组参数来模拟用户的行为

@ParameterizedTest:声明该方法为参数方法

2.4.1、单参数:

@ValueSource:参数来源

56696fce09fe4271a733f9a0f1e1609c.png

 关于@ValueSource使用:@ValueSource(数据类型方法 = {参数1,参数2,.....})

看源码:

935b162200d44260a852636eb141b8ec.png

 2.4.2、多参数

89b2aabd16f242c9acf276f1a38992d4.png

关于@CsvSource使用:每个双引号就是一组测试用例,每个参数之间用逗号隔开

 当数据太多的时候,这样写就不太好了,可以直接从某文件中获取

25693fb71d8942a5b13ef1dd857c76cb.png

 文件:

fcbb9bf6c29c40ea82eeb836d6deef43.png

注意在进文件写数据时,需要在打开方式中 选择Excel方式打开

 

2.4.3、动态参数 

29973968e16b45268fd6cfecc7404879.png

b9b17db46b854c93a0b3130dded4ad41.png 

 使用了参数化注解的方法不能再用@Test注解


2.5、测试套件

创建一个类,通过@Suite注解标识该类为测试套件类

631794708c874e8f9a37b82e50207458.png 

2.5.1、指定类运行用例

2b67c086af804902b5695db80a880f9c.png

 结果:

be7c8bb1979f4672ba55641012393f00.png

 

2.5.2、指定包名来运行包下所有的用例

9d973c905045481183a015b019137369.png

好啦,本期到这啦,下期见咯~~~

 

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

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

相关文章

字节跳动青训营--前端day10

文章目录前言一、web开发安全 - 攻击1. Cross-Site Scripting(XSS)1.1 存储型&#xff08;Stored Xss&#xff09;1.2 反射型&#xff08;Reflect Xss&#xff09;1.3 DOM型&#xff08;DOM Xss&#xff09;1.4 Mutation-based XSS2. Cross-Site Request Forgery&#xff08;CS…

如何使用TypeScript封装一个简单好用的Http工具

前言 Http 请求对于任何系统都是一大基石&#xff0c;那么如何封装一个高可用的 Http 请求工具呢&#xff1f;接下来手把手教你使用 TypeScript 封装一个高可用的 Http 请求工具。 本工具由三部分构成&#xff1a;Http基础层、基础方法层、业务层。 Http基础层 Http基础层主…

Lua语法入门

注意&#xff1a;文章将持续更新完善 文章目录一. 初识Lua二. HelloWorld三. Lua的数据类型四. 变量五. 循环六. 函数七. 条件控制一. 初识Lua Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#…

VR全景行业的应用价值如何呈现?

互联网高速发展的今天&#xff0c;多媒体所包含的种类也是越来越多&#xff0c;而一些较为传统的表现方式已经越来越无法满足大部分客户对展示方式的要求。而在传统的表现方式中&#xff0c;展现的方式无非是静态的平面图片以及动态的视频&#xff0c;但是他们都有一个缺点就是…

MybatisPlus------BaseMapper<T>删除方法详解(三)

MybatisPlus------BaseMapper删除方法详解&#xff08;三&#xff09; MybatisPlus框架中&#xff0c;创建的mapper接口&#xff0c;需要继承BaseMapper接口,T代表与表对应的实体类。 BaseMapper接口中提供了对单表进行增删改查的基础方法。 下面分别介绍四种&#xff1a; int…

2023.2.15每日一题——867. 转置矩阵

每日一题题目描述解题核心解法一&#xff1a;二维表示 模拟解法二&#xff1a;一维表示 模拟题目描述 题目链接&#xff1a;867. 转置矩阵 给你一个二维整数数组 matrix&#xff0c; 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转&#xff0c;交换矩阵…

牛客教你用雇主品牌力抢人才!附6类校招玩法

最新校招数据显示&#xff0c;79%的应届生在Offer抉择时首要考量薪资福利。但谈钱多伤感情啊~牛客从100案例中挑出6种最潮的校招雇主品牌玩法&#xff0c;助力你抢人才。01、英特尔中国&#xff1a;“芯”动小镇雇主是否能让自己产生激情和热情&#xff0c;已经成为应届生选择O…

Sharding-jdbc读写分离

一、binlog日志查看是否开启binlog日志 show variables like log_%;注意&#xff1a;直接打开mysql-bin是乱码&#xff1b;修改my.ini配置binlog-row-imageFULLcharacter-set-serverutf8mb4default-character-setutf8mb4转成log打开首先需要切换到存放mysqlbinlog.exe应用程序的…

IDEA中使用tomcat8-maven-plugin插件

第一种方式 pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.or…

android 混淆后的异常信息 工具处理

我们可以利用SDK中tools下的proguardgui.bat工具和混淆对应文档进行反混淆处理 D:\Android\sdk\tools\proguard\bin\proguardgui.bat 工具在SDK中的位置&#xff0c;有的SDK版本不同这个工具的具体位置可能有改变&#xff0c;也可以在tools中直接搜索proguardgui.bat&#x…

Netty 入门

文章目录一、概述1.1 Netty 是什么&#xff1f;1.2 Netty 的地位1.3 Netty 的优势二、Hello World2.1 目标2.2 服务器端2.3 客户端2.4 流程梳理三、组件3.1 EventLoop3.2 演示 NioEventLoop 处理 io 事件3.3 演示 NioEventLoop 处理普通任务3.4 演示 NioEventLoop 处理定时任务…

ThingsBoard-规则链-check existence fields

1、概述 今天我主要讲解【check existence fields】规则节点,顾名思义,这个节点就是检测字段是否存在。 可以检查规则节点消息(msg)和元数据(metadata)的字段。 2、节点理解 2.1、概述 【check existence fields】节点如图所示: 名称:你需要给这个节点命名。 Mes…

spring security简单教程以及实现完全前后端分离

简单教程spring security是spring家族的一个安全框架&#xff0c;入门简单。对比shiro&#xff0c;它自带登录页面&#xff0c;自动完成登录操作。权限过滤时支持http方法过滤。在新手入门使用时&#xff0c;只需要简单的配置&#xff0c;即可实现登录以及权限的管理&#xff0…

微服务 分布式搜索引擎 Elastic Search 索引库与文档操作

文章目录⛄引言一、Elastic Search 索引库⛅mapping 映射属性二、索引库的 CRUD &#xff08;增删改查&#xff09;⏰索引库的创建和映射⚡对索引库进行查询、修改、删除操作四、Elastic Search 文档操作⌚新增、查询、删除文档⚡修改Elastic Search 文档⛵小结⛄引言 本文参考…

C++——类和对象2

目录 类的六个默认成员函数 1. 构造函数 1.1 特性 1.2 实现 1.3 默认构造函数 1.4 默认构造函数处理行为 1.5 初始化列表 1.6 explicit关键字 2. 析构函数 2.1 特性 2.2 实现 2.3 默认析构函数 2.4 对象析构的顺序 3. 拷贝构造函数 3.1 特性 3.2 拷贝构造的…

JVM_内存区域与内存溢出异常

文章目录一、运行时数据区域1、程序计数器2、Java虚拟机栈3、本地方法栈4、Java堆5、方法区6、运行时常量池7、直接内存二、HotSpot虚拟机对象1、对象的创建2、对象的内存布局3、对象的访问定位三、OutOfMemoryError和StackOverflowError异常1、Java堆溢出&#xff08;最常见&a…

闭包可能导致的内存泄漏

什么是闭包 闭包是函数可以保留和访问其外部变量&#xff0c;比如 let a 1 let b function() {console.log(a) }这里变量b指向的函数可以访问外面的变量&#xff0c;你会说这不是废话吗&#xff1f;函数都可以访问外部变量呀 那再看一个例子 function f() {let value 123…

人人都能看懂的Spring源码解析,配置解析与BeanDefinition加载注册

人人都能看懂的Spring源码解析&#xff0c;扫描加载BeanDefinition的过程原理解析什么是BeanDefinition&#xff1f;两种配置方式扫描并读取配置信息&#xff0c;解析成BeanDefinition保存BeanDefinition源码走读xml配置方式整体流程示例代码BeanDefinition加载解析的入口创建X…

机器学习基础

一、基本概念 1 学习的概念 1975年图灵奖获得者、1978年诺贝尔经济学奖获得者、著名学者赫伯特.西蒙 (Herbert Simon) 曾下过一个定义: 如果一个系统&#xff0c;能够通过执行某个过程&#xff0c;就此改进了它的性能&#xff0c;那么这个过程就是学习.由此可看出&#xff0c;…

思科基础组面试(部分)

面了三轮&#xff0c;前面两轮因为录的视频坏了&#xff0c;很多问题忘了。 Round 1 Q:举例说明为什么hashmap线程不安全 A1: JDK1.8 HashMap线程不安全体现在&#xff1a;数据覆盖: 其中第六行代码是判断是否出现hash碰撞&#xff0c;假设两个线程A、B都在进行put操作&#…