【自动化测试】----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 {@Testvoid test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");}
}
打印  aaa   bbb   ccc
  1. @BeforeEach(当前方法需要在每一个用例执行前执行一次)
public class Test1 {@BeforeEachvoid test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");}
}打印  aaa  bbb  aaa  ccc
  1. @BeforeAll(需要静态方法,当前方法需要在所有用例执行前执行一次)
public class Test1 {@BeforeAll@Teststatic void test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");}
}
打印: aaa  bbb  ccc
  1. @AfterEach(前方法需要在每一个用例执行后执行一次)
public class Test1 {@Teststatic void test1(){System.out.println("aaa");}@AfterEachvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");}
}
打印:ccc   bbb
  1. @AfterAll(需要静态方法,当前方法需要在当前类下所有用例之前执行一次)
public class Test1 {@AfterAll@Teststatic void test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid 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)@Testvoid logintest(){System.out.println("logintest");}@Order(1)@Testvoid indextest(){System.out.println("indextest");}@Order(3)@Testvoid 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结尾)

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

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

相关文章

2024/2/4

第三章 类与构造函数 一&#xff0e;选择题 1、下列不能作为类的成员的是&#xff08;B&#xff09; A. 自身类对象的指针 B. 自身类对象 C. 自身类对象的引用 D. 另一个类的对象 2、假定AA为一个类&#xff0c;a()为该类公有的函数成员&#xff0c;x为该类的一个对象&am…

Java多线程--JDK5.0新增线程创建方式

文章目录 一、新增方式1&#xff1a;实现Callable接口&#xff08;1&#xff09;介绍&#xff08;2&#xff09;案例&#xff08;3&#xff09;总结对比 二、新增方式2&#xff1a;使用线程池&#xff08;1&#xff09;问题与解决思路1、现有问题2、解决思路3、好处 &#xff0…

Swift Vapor 教程(查询数据、插入数据)

上一篇简单写了 怎么创建 Swift Vapor 项目以及在开发过程中使用到的软件。 这一篇写一个怎么在创建的项目中创建一个简单的查询数据和插入数据。 注&#xff1a;数据库配置比较重要 先将本地的Docker启动起来&#xff0c;用Docker管理数据库 将项目自己创建的Todo相关的都删掉…

以小猪o2o生活通v17.1为例简要分析SWOOLE加密破解,swoole_loader加密破解swoole加密逆向后的代码修复流程(个人见解高手掠过)

现在用Php加密五花八门除了组件就是混淆&#xff0c;在组件里面响当当的还属swoole&#xff0c;SWOOLEC是不错的国产加密&#xff0c;值得推荐官方宣称是永远无法破解的加密算法&#xff0c;针对swoole compiler的代码修复我谈谈我的看法&#xff0c;以小猪o2o生活通&#xff0…

PyTorch 2.2 中文官方教程(十九)

使用 RPC 进行分布式管道并行 原文&#xff1a;pytorch.org/tutorials/intermediate/dist_pipeline_parallel_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 作者&#xff1a;Shen Li 注意 在github中查看并编辑本教程。 先决条件&#xff1a; PyTorc…

蓝桥杯备战(AcWing算法基础课)-高精度-乘-低精度

目录 前言 1 题目描述 2 分析 2.1 关键代码 2.2 关键代码分析 3 代码 前言 详细的代码里面有自己的理解注释 1 题目描述 给定两个非负整数&#xff08;不含前导 00&#xff09; A 和 B&#xff0c;请你计算 AB 的值。 输入格式 共两行&#xff0c;第一行包含整数 A&a…

04-Java建造者模式 ( Builder Pattern )

建造者模式 摘要实现范例 建造者模式&#xff08;Builder Pattern&#xff09;使用多个简单的对象一步一步构建成一个复杂的对象 一个Builder 类会一步一步构造最终的对象&#xff0c;该 Builder 类是独立于其他对象的 建造者模式属于创建型模式&#xff0c;它提供了一种创建对…

深度学习手写字符识别:训练模型

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客&#xff0c;网上也有很多教程&#xff0c;很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…

vcruntime140.dll最新的修复方法,一键修复vcruntime140.dll的手段

在这篇文章中&#xff0c;我们将深入探讨并详细介绍各种修复vcruntime140.dll文件缺失或损坏问题的方法。鉴于此类问题广泛存在并影响了众多用户&#xff0c;本文目的是向大家展示不同的修复策略&#xff0c;希望能够帮助每个人解决这些棘手的技术难题。下面一起来看看vcruntim…

【RT-DETR有效改进】UNetv2提出的一种SDI多层次特征融合模块(细节高效涨点)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本问给大家带来的改进机制是UNetv2提出的一种多层次特征融合模块(SDI)其是一种用于替换Concat操作的模块,SDI模块的主要思想是通过整合编码器生成的层级特征图来增强图像中的语义信息和细节信息。包括皮肤…

黑豹程序员-ElementPlus选择图标器

ElementPlus组件提供了很多图标svg 如何在你的系统中&#xff0c;用户可以使用呢&#xff1f; 这就是图标器&#xff0c;去调用ElementPlus的icon组件库&#xff0c;展示到页面&#xff0c;用户选择&#xff0c;返回选择的组件名称。 效果 代码 <template><el-inpu…

HarmonyOS ArkTS Button基本使用(十八)

HarmonyOS ArkTS是一种应用于鸿蒙系统的应用开发语言&#xff0c;它在TypeScript的基础上&#xff0c;扩展了声明式UI、状态管理等能力。在HarmonyOS中&#xff0c;Button是一种常用的组件&#xff0c;用于实现页面间的跳转和交互。下面详细介绍HarmonyOS ArkTS中Button的基本使…

深度学习环境指南【1】:Nvidia 驱动

系列文章目录 文章目录 系列文章目录前言选择合适的驱动可能遇到的问题安全模式下删除显卡现有的驱动删除在电脑上安装的 DDU 总结 前言 本文作为深度学习环境指南系列的第一篇文章&#xff0c;主要讲解当你第一次拿到显卡完成装机后需要做的步骤&#xff0c;或者是显卡驱动不…

如何使用GPT提问三元操作符?

英语10分钟&#xff1a; 现在chatgpt非常智能&#xff0c;使用的也越来越广泛&#xff0c;今天学习了使用chatgpt4提问时&#xff0c;应该遵循的提示原则&#xff0c;第一个原则&#xff0c;是要写清晰明确的、具体的说明&#xff0c;第二个原则是要给予模型思考的时间。可以安…

机器学习 - 梯度下降

场景 上一章学习了代价函数&#xff0c;在机器学习中&#xff0c;代价模型是用于衡量模型预测值与真实值之间的差异的函数。它是优化算法的核心&#xff0c;目标是通过调整模型的参数来最小化代价模型的值&#xff0c;从而使模型的预测结果更接近真实值。常见的代价模型是均方…

红黑树,以及其在C++的set、map等数据结构中应用

红黑树介绍&#xff1a; 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;它在插入和删除操作后通过一系列的旋转和着色操作来维持平衡。红黑树的命名来自于节点上的额外颜色属性&#xff0c;每个节点要么是红色&#xff0c;要么是黑色。 红…

【Boost】:searcher的建立(四)

searcher的建立 一.初始化二.搜索功能三.完整源代码 sercher主要分为两部分&#xff1a;初始化和查找。 一.初始化 初始化分为两步&#xff1a;1.创建Index对象&#xff1b;2.建立索引 二.搜索功能 搜索分为四个步骤 分词&#xff1b;触发&#xff1a;根据分词找到对应的文档…

架构设计特训

一、考点分布 软件架构风格&#xff08;※※※※&#xff09;层次型软件架构风格&#xff08;※※※※&#xff09;面向服务的软件架构风格&#xff08;※※※※&#xff09;云原生架构风格&#xff08;※※※※&#xff09;质量属性与架构评估&#xff08;※※※※※&#xff…

Transformer实战-系列教程1:Transformer算法解读1

&#x1f6a9;&#x1f6a9;&#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 Transformer实战-系列教程1&#xff1a;Transformer算法解读1 Transformer实战-系列教程2&#xff1a;Transformer算法解读2 现在最火的AI内容&#xff0c;chatGPT、视觉大模…

网络安全-端口扫描和服务识别的几种方式

禁止未授权测试&#xff01;&#xff01;&#xff01; 前言 在日常的渗透测试中&#xff0c;我们拿到一个ip或者域名之后&#xff0c;需要做的事情就是搞清楚这台主机上运行的服务有哪些&#xff0c;开放的端口有哪些。如果我们连开放的端口和服务都不知道&#xff0c;下一步针…