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

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.lryc.cn/news/181776.html

相关文章:

  • Elasticsearch安装并使用Postman访问
  • Pytorch深度学习训练模型保存问题,找不到保存路径
  • 数据结构与算法之堆: Leetcode 23. 合并 K 个升序链表 (Typescript版)
  • 代码随想录算法训练营第五十七天 | 392.判断子序列 115.不同的子序列
  • Kafka日志索引详解以及生产常见问题分析与总结
  • vue中 css scoped原理
  • tf.compat.v1.global_variables()
  • 登录注册实现
  • Push rejected: Push to origin/master was rejected
  • 在线OJ项目核心思路
  • Spring MVC:数据绑定
  • STM32CubeMX学习笔记-USB接口使用(HID按键)
  • C#,数值计算——Ranq2的计算方法与源程序
  • C/C++ 数据结构 - 链表
  • 【算法基础】一文掌握十大排序算法,冒泡排序、插入排序、选择排序、归并排序、计数排序、基数排序、希尔排序和堆排序
  • javascript二维数组(3):指定数组元素的特定属性进行搜索
  • 使用Qt进行HTTP通信的方法
  • 第45节——页面中修改redux里的数据
  • 软考 系统架构设计师系列知识点之软件架构风格(2)
  • 【C++11】Lambda 表达式:基本使用 和 底层原理
  • 【网络安全---ICMP报文分析】Wireshark教程----Wireshark 分析ICMP报文数据试验
  • 【Docker】Docker的应用包含Sandbox、PaaS、Open Solution以及IT运维概念的详细讲解
  • Java Applet基础
  • 【记录】IDA|IDA怎么查看当前二进制文件自动分析出来的内存分布情况(内存范围和读写性)
  • LIMS实验室信息管理系统源码 基于计算机的数据处理技术、数据存储技术、网络传输技术、自动化仪器分析技术于一体
  • 有效括号相关
  • 浅谈泛型擦除
  • nodejs+vue校园跑腿系统elementui
  • Redis Cluster Cron调度
  • Redis Cluster Gossip Protocol: Message