软件测试(Junit5 单元测试框架)(五)

1. Junit单元测试框架

  1. Junit 是 Java 的一个单元测试框架, 使用Selenium写自动化测试用例, 使用Junit 管理写好的测试用例.

2. 注解:

  • @Test 表示当前的这个方法是一个测试用例.

示例:

  1. 添加依赖
<!-- 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><scope>test</scope>
</dependency>
  1. 编码
    • 不能有修饰符
    • 返回值为空
      在这里插入图片描述
  • @Disabled 被修饰的方法将不会被执行.
    在这里插入图片描述
  • @BeforeAll , @AfterAll

    • 针对整个类起作用, 被修饰的方法需要添加static关键字
    • @BeforeAll 一般用于初始化, 如果做UI自动化,通常用于创建驱动,打开网页,
    • @AfterAll 一般用于扫尾工作,如果做UI自动化, 通常用于关闭浏览器
      在这里插入图片描述
  • @BeforeEach, @AfterEach
    • 在每个方法执行前后执行
      在这里插入图片描述
      在这里插入图片描述

3. 参数化:

首先引入Parameterized依赖 (与Junit 版本保持一致):

<!-- 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><scope>test</scope>
</dependency>
  • 传递单参数 使用 @ValueSource() 注解
    • 传递int型参数
        @ParameterizedTest@ValueSource(ints = {1,2,3})void Test(int num) {System.out.println(num);}
    
    在这里插入图片描述
    • 传递字符串类型参数
      @ParameterizedTest@ValueSource(strings = {"1","2", "3"})void Test2(String str) {System.out.println(str);}
    
    在这里插入图片描述
  • 多参数
    • 通过 @CsvFileSource 注解获取参数
      1. 添加CSV文件
      在这里插入图片描述
      2. 编码

      
      @ParameterizedTest
      @CsvFileSource(resources = {"test1.csv"})
      void Test3(String name) {System.out.println(name);}    
      
  1. 运行结果:
    在这里插入图片描述

    • 通过方法获取参数
       public static Stream<Arguments> Generator() {return Stream.of(Arguments.arguments(1,"张三"),Arguments.arguments(2,"李四"),Arguments.arguments(3,"王五"));
    }@ParameterizedTest
    @MethodSource("Generator")
    void Test4(int num,String str) {System.out.println(num+","+str);
    }
    

在这里插入图片描述

4. 设置顺序

  • 使用 @org.junit.jupiter.api.Order() 配置测试用例执行顺序

    • 示例:设置顺序
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Order {@ParameterizedTest@ValueSource(ints = {1,2,3})@org.junit.jupiter.api.Order(2)void Test1(int num) {System.out.println("Test1");System.out.print(num);}@ParameterizedTest@ValueSource(strings = {"1","2", "3"})@org.junit.jupiter.api.Order(1)void Test2(String str) {System.out.println("Test2");System.out.print(str);}
}

在这里插入图片描述

  • 示例:随机执行
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;@TestMethodOrder(MethodOrderer.Random.class)
public class Order {@Testvoid Test1() {System.out.println("Test1");}@Testvoid Test2() {System.out.println("Test2");}
}

在这里插入图片描述

5. 断言

  • 断言相等
  • 断言不相等
  • 断言为空
  • 断言不为空
  • 通过 Assertions 实现断言
    示例: 断言相等
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;public class AssertTest {@ParameterizedTest@ValueSource(ints = {1})void Test (int num){System.out.println(num);// 判断 num == 1 ?Assertions.assertEquals(num,1);}
}

在这里插入图片描述

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;public class AssertTest {@ParameterizedTest@ValueSource(ints = {1})void Test (int num){System.out.println(num);// 判断 num == 1 ?Assertions.assertEquals(num,2);}
}

在这里插入图片描述

7. Suite

首先引入maven依赖

<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><!-- 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>
  • 通过添加@Suit 和 @SelectClasses 注解指定Class
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;@Suite
@SelectClasses({AssertTest.class,Main.class,Order.class})
// 依次执行 AssertTest.class、Main.class、Order.class 三个类中的测试方法
public class RunSuite {}

在这里插入图片描述

  • 通过添加@Suit 和 @SelectPackages 注解 指定package
    在这里插入图片描述

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

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

相关文章

【THM】SQL Injection(SQL注入)-初级渗透测试

简介 SQL(结构化查询语言)注入,通常称为 SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经正确验证的用户输入与数据库进行通信时,攻击者有可能窃取、删除或更改私人数据和客户数据,并攻击 Web 应用程序身份验证方法以获取私有数据…

python对接百度云车牌识别

注册百度智能云&#xff0c;选择产品服务。 https://console.bce.baidu.com/ 每天赠送200次&#xff0c;做开发测试足够了。 在应用列表复制 AppID , API Key ,Secret Key 备用。 SDK下载地址 https://ai.baidu.com/sdk#ocr 下载SDK文件&#xff0c;解压&#xff0c;…

python+scrapy电影推荐系统可视化分析系统

在本系统的开发过程中&#xff0c;研究学习了如何使用scrapy、Django这两大框架&#xff0c;体会到了python语言的“极简至优美”&#xff0c;我接触到了这几个框架的前沿知识&#xff0c;对自己可以站在巨人的肩膀上兴奋不已。我在系统开发过程中&#xff0c;经历了由抓取数据…

67、yolov8目标检测和旋转目标检测算法batchsize=1/6部署Atlas 200I DK A2开发板上

基本思想:需求部署yolov8目标检测和旋转目标检测算法部署atlas 200dk 开发板上 一、转换模型 链接: https://pan.baidu.com/s/1hJPX2QvybI4AGgeJKO6QgQ?pwd=q2s5 提取码: q2s5 from ultralytics import YOLO# Load a model model = YOLO("yolov8s.yaml") # buil…

Linux之ssh服务

目录 一、ssh简介 ssh组件 二、配置文件 三、相关的命令 ssh scp 四、密钥认证 一、ssh简介 远程登陆linux用的就是ssh服务 ssh服务特点就是数据会机密传输 ssh组件 组件&#xff1a;openssh 服务器&#xff1a;sshd 默认端口&#xff1a;22 二、配置文件 /etc/ssh/ss…

如何在CentOS安装StackEdit Markdown编辑器并实现无公网IP远程访问使用

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安…

镭速如何解决UDP传输不通的问题

我们之前有谈到过企业如果遇到UDP传输不通的情况&#xff0c;常见的一些解决方式&#xff0c;同时也介绍了一站式企业文件传输方式-镭速相关优势&#xff0c;如果在实际应用中&#xff0c;若镭速UDP传输出现不通的情况&#xff0c;需要按照网络通信的一般性排查方法以及针对镭速…

男裤哪个品牌质量好?一次教你学会怎么选男生裤子

相信大家每次在选衣服和裤子的时候都希望能够买到好看质量又好的&#xff0c;但现在市面却太多不同的品牌&#xff0c;并且质量也参差不齐&#xff0c;十分容易选择到一些质量不好的裤子。那么今天就专门对现在市面热门的几款男装裤子进行测评&#xff0c;并根据具体结果进行推…

漏洞挖掘 | 某医院小程序支付漏洞+越权

某医院小程序存在支付漏洞和越权查看他人身份证&#xff0c;手机号&#xff0c;住址等信息 一个医院线上的小程序 登陆后点击个人信息&#xff0c;抓包&#xff0c;放到repQeter模块&#xff0c; 修改strUserID参数可以越权查看别人信息 放intruder模块可以跑数据&#xff0c;…

【好书推荐4】图机器学习

【好书推荐4】图机器学习 写在最前面编辑推荐内容简介作者简介目录前言/序言本书读者内容介绍 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能…

考研数学|《880题》怎么刷效率最高呢?

我觉得880题至少要刷两遍才能吃透其中的精华 如果已经做完了1800题基础部分&#xff0c;并且正确率还不错&#xff0c;那就可以做880题了&#xff0c;但是做880题之前&#xff0c;我的建议是&#xff0c;先把1800题基础部分的错题再给过一遍&#xff0c;因为你现在做880题基础…

matlab中旋转矩阵函数

文章目录 matlab里的旋转矩阵、四元数、欧拉角四元数根据两向量计算向量之间的旋转矩阵和四元数欧拉角转旋转矩阵旋转矩阵转欧拉角旋转矩阵转四元数参考链接 matlab里的旋转矩阵、四元数、欧拉角 旋转矩阵dcmR四元数quatq[q0,q1,q2,q3]欧拉角angle[row,pitch,yaw] % 旋转矩阵…