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

Junit常见用法

一.Junit的含义

Junit是一种Java编程语言的单元测试框架。它提供了一些用于编写和运行测试的注释和断言方法,并且可以方便地执行测试并生成测试报告。Junit是开源的,也是广泛使用的单元测试框架之一

二.Junit项目的创建

(1)先创建一个 普通的maven项目

  (2)然后在pom.xml文件里添加一些Junit的一些相关依赖

   

 <dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency><!-- 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></dependencies>

三.Junit常用注解

1.@Test  表示执行此测试用例,使用@Test框架,我们不需要在类里创建mian方法,然后在main方法里调用测试方法,可以直接在类里定义测试方法

  @Testvoid test1(){System.out.println("执行测试用例1");}

2.@disabled  表示不执行此测试用例

3.@BeforeAll  @AfterAll  @BeforeEach @AfterEach

(1)@BeforeAll 在所有的测试用例执行之前开始执行且只执行一次,因此它的方法应该是属于类的,是一个静态方法。

(2)@AfterAll 在所有测试用例执行之完开始执行且只执行一次,因此它的方法也是属于类方法,是一个静态方法。

(3)@BeforeEach在每个测试用例执行前开始执行

 @BeforeEachvoid beforeeach(){System.out.println("这是beforeeach的语句");}

(4)@AfterEach在每个测试用例执行完执行

@AfterEachvoid aftereach(){System.out.println("这是aftereach语句");}

 三.junit参数传递

1.单种类型的参数

第一个注解@ParameterizedTest此注解作用在方法上,表示此方法支持多个传入多个参数

第二个注解@ValueSource()此注解表示传入一组同类型的数据,例如ints={1,2,3}表示传入一组int类型的数据,strings={"小明","小凯"}表示传入一组string类型的数据

但是这种方式只能传递一种类型的参数,如果我们传多种参数就会报错

2.多种类型的参数 

(1)Csv

注解@CsvSource({"第一组数据","第二组数据"},不同组数据之间用逗号分割,

一组数据

多组数据 

(2)Csv文件

读取文件里的参数,文件里面的参数以逗号分割

@CsvFileSource(resources="文件名")

在resources底下建立一个test7.csv文件 

2.方法

@MethodSource("方法名")

定义一个静态方法,返回类型为Stream对象,内部调用Stream.of()方法

si 

3.测试套件 注解@Suite

(1)通过类名运行测试用例

@SelectClasses(),括号里面用于指定类名

(2) 通过包名运行测试用例

@SelectPackages(value=  )用于指定包名, 注意包名底下的测试类必须是XXXTest的格式,且Suittest这个类不能在要指定的包名底下

指定单个包名 

指定多个包名

 

 四.assert断言

只有断言通过测试用例才通过,

1.Assertions.assertEquals(期待值,真实值)当期待值和真实值一样时测试用例才通过,当期待值和真实值不一样时会抛出异常

2. Assertions.assertNotEquals(期待值,真实值)当期待值和真实值不一致时,测试用例才通过,否则会抛出异常

 @ParameterizedTest@ValueSource(ints={2})void test6(int num){Assertions.assertNotEquals(1,num);}

3. . Assertions.assertNull(num),只有num为null时测试用例才通过,否则会抛出异常 

五.测试用例执行的顺序

 大家来想一个问题,这三个测试用例那个先执行?是按一定照从上到下的顺序吗?

其实不是的,junit有自己的一套执行顺序的算法

但我们可以自己指定其测试用例执行顺序

(1)按照自己指定的顺序执行测试用例

(2) 按照任意顺序执行测试用例

http://www.lryc.cn/news/89204.html

相关文章:

  • c++—内存管理、智能指针、内存池
  • JAVA使用HTTP代码示例
  • 【网络协议详解】——电子邮件系统协议(学习笔记)
  • 年度发布 | MeterSphere一站式开源持续测试平台发布v2.10 LTS版本
  • 从 OceanBase 迁移数据到 DolphinDB
  • 淘宝商品列表数据接口(支持价格、销量排序)
  • Android 11 版本变更总览
  • 传染病学模型 | Matlab实现基于SIS传染病模型模拟城市内人口的互相感染及城市人口流动所造成的传染
  • 物联网技术如何改变我们的生活:一位资深物联网专家的见解
  • node.js+vue.js大学生在线选课系统的设计与实现93pul
  • 华为OD机试真题 Java 实现【寻找符合要求的最长子串】【2023Q1 200分】
  • 接口测试工具Postman接口测试图文教程
  • 视频编辑软件:迅捷视频工具箱
  • 网络知识点之-HTTP协议
  • K类函数和KL类函数
  • 华为OD机试之完美走位(Java源码)
  • Vue 原始(传统)或特别的视频组件具体实现方法
  • 香豆素荧光标记652966-03-5,ATTO425 acid,ATTO 425 羧酸,进行简析说明
  • linux信号量与PV操作知识点总结
  • 6-python中的string类型
  • Windows系统内核溢出漏洞提权
  • BlackIce病毒分析
  • 软件测试基础知识整理(八)- 软件缺陷
  • 有没有想过一种可能,30岁之后,转行去做IT售前?
  • 基于决策树的Ensemble方法在边缘计算中的应用
  • golang常见导致panic的场景
  • Python 修改文件权限+只读后几行 can‘t do nonzero end-relative seeks
  • 每日学术速递5.25
  • GAMES202作业1
  • Android 12.0状态栏居中显示时间和修改时间显示样式