Junit的常用操作

注:本篇文章讲解的是junit5

 

目录

Juint是什么

Juint需要导入的依赖

Juint常用注解

 Junit执行顺序

 参数化

断言

测试套件


Juint是什么

Juint 是 Java 的一个单元测试框架. 也是回归测试框架. 使用 Junit 能让我们快速的完成单元测试。

注意:Junit 测试也是程序员测试,即白盒测试,它需要程序员知道被测试的代码如何完成功能,以及完成什么样的功能

Juint需要导入的依赖

本篇文章junit代码需要的依赖, 这里给大家贴出来

<!--junit依赖-->
<!--        api--><!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.2</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.2</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.2</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.2</version></dependency>

Juint常用注解

@Test: 在类上注解,i表名当前类是一个测试用例

@BeforeAll: 一个类中,所有方法执行之前会执行一次

@AfterAll: 一个类中,所有方法执行结束会执行一次

@BeforeEach: 每个方法执行执行都会执行一次这个方法

@AfterEach: 每个方法执行结束之后都会执行一次这个方法

@BeforeAll @AfterAll 与 @BeforeEach @AfterEach 区别在于

@BeforeAll @AfterAll 

修饰的方法是static void的,也就是说是属于类的,在一个类中一共只会执行一次

@BeforeEach @AfterEach

修饰的方法是void的,会在类中的每个方法执行 之前/之后 都会执行一次

还有一个常用方法是:

@Disabled: 忽略当前测试用例,不执行 

public class junit1 {@Testvoid test1(){WebDriver webDriver=new ChromeDriver();webDriver.get("https://www.baidu.com/");}@Disabled //忽略当前测试用例,不执行@Testvoid test2(){System.out.println("测试用例2");}@Testvoid test10(){System.out.println("测试用例10");}@BeforeAllstatic void test3(){System.out.println("类前置");}@AfterAllstatic void test4(){System.out.println("类后置");}@BeforeEachvoid test5(){System.out.println("方法前置");}@AfterEachvoid test6(){System.out.println("方法后置");}}

通过这个执行结果也可以清晰的看到执行的顺序  以及执行的次数

 Junit执行顺序

那么如果方法多了,哪个方法优先执行呢?

默认顺序由方法名hashcode值来决定,如果hash值大小一致,则按名字的字典顺序确定

由于hashcode的生成和操作系统相关(以native修饰),所以对于不同操作系统,可能会出现不一样的执行顺序,在某一操作系统上,多次执行的顺序不变.

我们也可以进行设置:

设置有两种方式:按照指定顺序执行  /  按照随机顺序执行,不可以同时存在

//声明按照指定顺序进行执行
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
//随机顺序执行
//@TestInstance(MethodOrderer.Random.class)//不可以同时存在
public class junit {@Order(2)@Testvoid test1(){WebDriver webDriver=new ChromeDriver();webDriver.get("https://www.baidu.com/");}@Disabled //忽略当前测试用例,不执行@Testvoid test2(){System.out.println("测试用例2");}@Order(5)@Testvoid test10(){System.out.println("测试用例10");}@Order(4)@Testvoid test11(){System.out.println("测试用例11");}@Order(8)@Testvoid test12(){System.out.println("测试用例12");}@Order(1)@Testvoid test13(){System.out.println("测试用例13");}@BeforeAllstatic void test3(){System.out.println("类前置");}@AfterAllstatic void test4(){System.out.println("类后置");}@BeforeEachvoid test5(){System.out.println("方法前置");}@AfterEachvoid test6(){System.out.println("方法后置");}}

执行结果就是按照我们设置的顺序进行执行的, 设置的数字顺序可以不连续, 可以为负数,

他会按照从小到大的顺序进行执行:

 参数化

单参数

多参数: 1. cvs 传参   2. 方法传参

//参数传递 
public class junit2 {public static Stream<Arguments> m1() {return Stream.of(Arguments.arguments("1,zhang","2,lissss","3,wang","4,lisi"));}//单参数//    @Test@ParameterizedTest//不可以和Test同时存在@ValueSource(strings = {"1","2","3"})void test10(String str){System.out.println(str);}//多参数 Csv1@ParameterizedTest@CsvSource({"1,2","s,3"})void test(String s,int n){System.out.println(s+" "+n);}//多参数 Csv2@ParameterizedTest@CsvFileSource(resources="test1.csv")void test2(int id,String name){System.out.println(id+" " +name);}//使用方法进行多参数传递@ParameterizedTest@MethodSource("m1")void test3(String id,String name){System.out.println(id+" "+name);}}

断言

//断言@ParameterizedTest@ValueSource(strings={"1"})void test4(String s){//断言相等Assertions.assertEquals(s,"1");//断言不相等Assertions.assertNotEquals(s,2);//断言为空Assertions.assertNull(s);//断言不为空Assertions.assertNotNull(s);}

测试套件

Junit是怎么进行管理测试用例的呢?

就是通过测试套件.

1.以类为单位进行执行

@Suite
@SelectClasses({junit.class,junit2.class})
public class suit1 {
}

2.以包为单位进行执行

@Suite
@SelectPackages({"org.example.junit1","org.example.junit2"})
public class suit1 {}

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

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

相关文章

调用gethostbyname实现域名解析(附源码)

VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…

SystemUI导航栏

SystemUI导航栏 1、系统中参数项1.1 相关开关属性2.2 属性设置代码 2、设置中设置“三按钮”导航更新流程2.1 属性资源覆盖叠加2.2 SystemUI导航栏接收改变广播2.3 SystemUI导航栏布局更新2.4 时序图 android13-release 1、系统中参数项 1.1 相关开关属性 设置->系统->…

测试用例的编写(面试常问)

作者&#xff1a;爱塔居 专栏&#xff1a;软件测试 作者简介&#xff1a;不断总结&#xff0c;才能变得更好~踩过的坑&#xff0c;不能再踩~ 文章简介&#xff1a;常见的几个测试用例。 一、淘宝购物车 二、登录页面 三、三角形测试用例 abc结果346普通三角形333等边三角形334…

安装matplotlib_

安装pip 安装matplotlib 安装完毕 导入出现bug......

【LeetCode热题100】--35.搜索插入位置

35.搜索插入位置 使用二分查找&#xff1a; class Solution {public int searchInsert(int[] nums, int target) {int low 0,high nums.length -1;while(low < high){//注意每次循环完都要计算midint mid (low high)/2;if(nums[mid] target){return mid;}if(nums[mid]…

SpringCloudGateway网关中各个过滤器的作用与介绍

文章目录 RemoveCachedBodyFilterAdaptCachedBodyGlobalFilterNettyWriteResponseFilterForwardPathFilterRouteToRequestUrlFilterWebSocketRoutingFilterNettyRoutingFilterForwardRoutingFilterDispatcherHandler 是什么&#xff1f;⭐如何确定最后的路由路径&#xff1f;下…

聊天记录一句一句出现的视频制作,制作抖音聊天记录视频教程

聊天记录情感中视频制作工具是一款专注于将聊天记录转化为抖音视频的工具。它可以将平淡的聊天截图转化为生动有趣的视频&#xff0c;让你的回忆变得更加具有观赏性和情感共鸣。 首先&#xff0c;聊天记录一句一句出现的视频制作功能是该工具的一大特点。通过这个功能&#xf…

LLVM IR 文档 专门解释 LLVM IR

https://llvm.org/docs/LangRef.html#phi-instruction

[C++随想录] 优先级队列的模拟实现

优先级队列的模拟实现 底层结构初始化向下调整 && 向上调整push && poptop && empty && size源码 底层结构 namespace muyu {template <class T, class Continer std::vector<T>, class Compare less<T> >class priority_…

机器学习(监督学习)笔记

目录 总览笔记内容线性回归梯度下降特征缩放多输出线性回归 逻辑回归二分类与逻辑回归分类任务的性能指标&#xff08;召回率&#xff0c;精度&#xff0c;F1分数等&#xff09;支持向量机SVMK近邻朴素贝叶斯分类器朴素贝叶斯分类器进阶多分类逻辑回归二分类神经网络多分类神经…

代码随想录 Day10 栈与队列 LeetCode T239 滑动窗口的最大值 T347 前K个高频元素

简要介绍一下单调队列和优先级队列的不同 元素顺序的处理&#xff1a;单调队列中&#xff0c;元素的顺序是单调的&#xff0c;也就是说&#xff0c;队列中的元素按照特定的单调性&#xff08;递增或递减&#xff09;排列。这种特性使得单调队列在处理一些问题时非常高效&#…

LVGL_基础控件label

LVGL_基础控件label 1、创建一个基础对象 /* 创建一个基础对象 label */ lv_obj_t * label lv_label_create(lv_scr_act()); // 创建一个label部件(对象),他的父对象是活动屏幕对象2、设置显示内容 char * text "www.100ask.net"; // 要显示的文字 /* 展示文…

postgresql新特性之Merge

postgresql新特性之Merge 创建测试表测试案例 创建测试表 create table cps.public.test(id integer primary key,balance numeric,status varchar(1));测试案例 官网介绍 merge into test t using ( select 1 id,0 balance,Y status) s on(t.id s.id) -- 当匹配上了,statu…

Spring Cloud Loadbalancer 实现客户端负载均衡

针对 ribbon 负载均衡组件&#xff0c; 官方提出的替换解决方案是 Spring Cloud Loadbalancer。本次主要通过学习示例介绍了 Spring Cloud Loadbalancer 的基础使用。 1&#xff0c;引入pom <dependency><groupId>org.springframework.cloud</groupId><…

无状态自动配置 DHCPv6无状态配置 DHCPv6有状态配置

1、无状态自动配置 配置命令 AR1 ipv6 #开启路由器ipv6报文转发功能 interface GigabitEthernet0/0/0 ipv6 enable #开启路由器接口IPv6报文转发功能 ipv6 address FC01::1/64 …

力扣-367.有效的完全平方数

暴力 class Solution { public:bool isPerfectSquare(int num) {for(long i 1; i * i < num; i) {if(i * i num) return true;}return false;} };二分查找 class Solution { public:bool isPerfectSquare(int num) {int left 1, right num;while(left < right) {in…

免费app签名分发平台应用cdn分发平台为什么会免费?商业分析他的盈利模式

近年来&#xff0c;随着移动应用的迅速发展&#xff0c;免费app签名分发平台和应用CDN分发平台日益受到开发者和用户的关注。本报告旨在分析这些平台的商业模式&#xff0c;探讨其利润点、营销点以及所采取的优势。 一、商业模式分析&#xff1a; 广告收入&#xff1a; 免费a…

找不到msvcp110.dll是什么意思?总结msvcp110.dll丢失修复方法分享

随着电脑技术的不断发展&#xff0c;我们也会遇到各种各样的问题。最近&#xff0c;我就遇到了一个问题&#xff1a;电脑丢失msvcp110.dll的困扰。这个问题让我深感无奈&#xff0c;但同时也让我学到了很多关于电脑维修和系统修复的知识。在这篇文章中&#xff0c;我将分享我的…

SQL与关系数据库基本操作

SQL与关系数据库基本操作 文章目录 第一节 SQL概述一、SQL的发展二、SQL的特点三、SQL的组成 第二节 MySQL预备知识一、MySQL使用基础二、MySQL中的SQL1、常量&#xff08;1&#xff09;字符串常量&#xff08;2&#xff09;数值常量&#xff08;3&#xff09;十六进制常量&…

Java之并发工具类的详细解析

3. 并发工具类 3.1 并发工具类-Hashtable Hashtable出现的原因 : 在集合类中HashMap是比较常用的集合对象&#xff0c;但是HashMap是线程不安全的(多线程环境下可能会存在问题)。为了保证数据的安全性我们可以使用Hashtable&#xff0c;但是Hashtable的效率低下。 代码实现 …