单元测试用例分组 demo
文章目录
- 目标
- 1、使用 @Category 进行用例分组
- (1)设置用例组
- (2)编写测试类,case设置对应的用例组
- (3)编写执行类
- (4)查看运行结果
- (5)联系项目
- 2、参数化
目标
-
用例根据(pass情况、地图类型特点、HLL自建地图的问题)
解决方案 -
使用 @Category 对用例进行分组,然后参数化类中手动设置即可,可以实现预期目标
1、使用 @Category 进行用例分组
(1)设置用例组
BaiduTest、GDTest 用例组接口编写,用于方法case分组
public interface BaiduTest {
}
public interface GDTest {
}
(2)编写测试类,case设置对应的用例组
测试类,用于写测试用例,然后@Category可以进行用例分组,方法级别的
注意:不要写Log.i 打印,目前没有在Android进行操作,只用 System.out.println() 打印即可
public class A {// 用例分组,高德组@Category(GDTest.class)@Testpublic void b() {System.out.println("开始执行高德地图用例");}// 用例分组,百度组@Category(BaiduTest.class)@Testpublic void c(){System.out.println("开始执行百度地图用例");}// 用例分组,(高德、百度组)@Category({GDTest.class, BaiduTest.class})@Testpublic void d(){System.out.println("开始执行高德、百度组 共同用例");}}
(3)编写执行类
@RunWith(Categories.class)
@Suite.SuiteClasses(A.class)// 要执行的测试类
@Categories.IncludeCategory({GDTest.class}) // 通过的用例组
public class SlowTestSuite {}
(4)查看运行结果
- b 通过,打印高德用例执行
- D 通过,打印 高德百度 用例执行
![[图片]](https://img-blog.csdnimg.cn/3367f8417c57414382030497e1467225.png)
![[图片]](https://img-blog.csdnimg.cn/838bc3ba1bd84245ab15794d9fc80869.png)
(5)联系项目
此时我们的第一个目标,给用例分组就实现了。
可以将 testBaseMap 中的类 根据测试 case 的 pass 情况、地图不同的特点、图商实现但HLL未实现功能,使用@Catagory 进行分组
2、参数化
后面可以加上参数化,给单独的用例组的用例加上对应的参数.
没有想到单独用例组对应一组参数的做法,但是可以通过另一种做法绕开来实现。
在测试类中可以实现多个参数化的方法,可以只留1个,其他几个注释掉。 或者在原来参数化的data() 方法里面直接注释掉其他几个,保留一个就行。用到什么类型,解掉什么类型的注释即可
@RunWith(Parameterized.class)
public class A {private String Map_Type ;// @Parameterized.Parameters
// public static Collection<Object> data(){
// return Arrays.asList(new Object[]{
// "GD_Map_Type", // 对应GD_MapType
// "BD_Map_Type", // 对应Baidu_MapType
// "HLL_Map_Type" // 对应HLL_MapType
// });
// }@Parameterized.Parameterspublic static Collection<Object> data(){return Arrays.asList(new Object[]{"GD_Map_Type", // 对应GD_MapType});}// @Parameterized.Parameters
// public static Collection<Object> data(){
// return Arrays.asList(new Object[]{
// "BD_Map_Type", // 对应Baidu_MapType
// });
// }// @Parameterized.Parameters
// public static Collection<Object> data(){
// return Arrays.asList(new Object[]{ // "HLL_Map_Type" // 对应HLL_MapType// });// }public A(String MAp_Type){this.Map_Type = MAp_Type;}// 用例分组,高德组@Category(GDTest.class)@Testpublic void b() {System.out.println("开始执行高德地图用例");System.out.println(Map_Type);}// 用例分组,百度组@Category(BaiduTest.class)@Testpublic void c(){System.out.println("开始执行百度地图用例");System.out.println(Map_Type);}}
上面只保留了一个类型的参数 GD_Map,测试套件之后再筛选 符合高德地图的方法case用例,成功实现我们的期望效果。
@RunWith(Categories.class)
@Suite.SuiteClasses(A.class)// 要执行的测试类
@Categories.IncludeCategory({GDTest.class}) // 要求通过的高德-用例组
public class SlowTestSuite {}
最终实现,在 GD_Type 上面跑 符合 高德地图的专门用例
![[图片]](https://img-blog.csdnimg.cn/960793ef5d7344e792b521e8ea6367c7.png)
相关文章:
单元测试用例分组 demo
文章目录 目标1、使用 Category 进行用例分组(1)设置用例组(2)编写测试类,case设置对应的用例组(3)编写执行类(4)查看运行结果(5)联系项目 2、参数…...
观察者模式(Observer)
观察着模式是一种行为设计模式,可以用来定义对象间的一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图…...
20天学会rust(二)rust的基础语法篇
在第一节(20天学rust(一)和rust say hi)我们配置好了rust的环境,并且运行了一个简单的demo——practice-01,接下来我们将从示例入手,学习rust的基础语法。 首先来看下项目结构: 项目…...
Stephen Wolfram:嵌入的概念
The Concept of Embeddings 嵌入的概念 Neural nets—at least as they’re currently set up—are fundamentally based on numbers. So if we’re going to to use them to work on something like text we’ll need a way to represent our text with numbers. And certain…...
springboot,swagger多个mapper包,多个controller加载问题
启动类添加MapperScan({"xxx.xxx.xxx.mapper","xxx.xxx.xxx.mapper"}) swagger配置类添加 Bean public Docket api01() {return new Docket(DocumentationType.SWAGGER_2)//.enable(swagger_is_enabl).apiInfo(new ApiInfoBuilder().title("你的title…...
湖大CG满分教程:作业训练四编程题20. 回文串(暴力×动态规划算法√)
问题描述 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。给你一个字符串,问最少在字符串尾添加多少字符,可以使得字符串变为回文串。 输入格式 有多组测试数据。 每组测试数据第一行是一个正整数N…...
使用toad库进行机器学习评分卡全流程
1 加载数据 导入模块 import pandas as pd from sklearn.metrics import roc_auc_score,roc_curve,auc from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression import numpy as np import math import xgboost as xgb …...
Python数据容器——列表(list)
数据容器入门 Python中的数据容器: 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素 每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 数据容器根据特点的不同,如:是否支持重复元…...
Linux CEF(Chromium Embedded Framework)源码下载编译详细记录
Linux CEF(Chromium Embedded Framework)源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 前置条件 下载的过程非…...
Adaptive AUTOSAR—— Communication Management 3.1
9 Communication Management 9.1 What is Communication Management? 通信管理是自适应平台架构中的一个功能集群。 作为一个功能集群,通信管理向应用程序提供了一个C++ API,实现了面向服务的通信。服务是一个由应用程序提供的功能单元,可以在运行时被另一个应用程序动态…...
VMnet0 桥接设置
VMnet0 一定要设置为你的硬件物理网卡,不能设置自动,不然后,网线一断,就再也连不上了。必须重启电脑才能连上,这个问题找了很久才找到。 下面有个hyper-V虚拟网卡,如果选自动的话,物理网卡一掉…...
Sublime Text 4 Build 4151 4152 发布及注册方法
Sublime Text 是一个商业代码编辑器。它原生支持许多编程语言和标记语言,用户可以通过插件来扩展它的功能,这些插件通常是由社区建立的,并以自由软件许可证的形式维护。为了方便插件,Sublime Text 有一个 Python API。 Sublime T…...
第八篇: K8S Prometheus Operator实现Ceph集群企业微信机器人告警
Prometheus Operator实现Ceph集群企业微信告警 实现方案 我们的k8s集群与ceph集群是部署在不同的服务器上,因此实现方案如下: (1) ceph集群开启mgr内置的exporter服务,用于获取ceph集群的metrics (2) k8s集群通过 Service Endponit Ser…...
软件单元测试
单元测试目的和意义 对于非正式的软件(其特点是功能比较少,后续也不有新特性加入,不用负责维护),我们可以使用debug单步执行,内存修改,检查对应的观测点是否符合要求来进行单元测试,…...
Redis | 集群模式
Redis | 集群模式 随着互联网应用规模的不断扩大,单一节点的数据库性能已经无法满足大规模应用的需求。为了提高数据库的性能和可扩展性,分布式数据库成为了解决方案之一。Redis 作为一个高性能的内存数据库,自然也有了自己的分布式部署方式…...
8.3day04git+数据结构
文章目录 git版本控制学习高性能的单机管理主机的心跳服务算法题 git版本控制学习 一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容 安装g…...
04-5_Qt 5.9 C++开发指南_QComboBox和QPlainTextEdit
文章目录 1. 实例功能概述2. 源码2.1 可视化UI设计2.2 widget.h2.3 widget.cpp 1. 实例功能概述 QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个QLineEdit 用作输入。OComboBox 除了显示可见下拉列表外,每个…...
Sqlserver_Oracle_Mysql_Postgresql不同关系型数据库之主从延迟的理解和实验
关系型数据库主从节点的延迟是否和隔离级别有关联,个人认为两者没有直接关系,主从延迟在关系型数据库中一般和这两个时间有关:事务日志从主节点传输到从节点的时间事务日志在从节点的应用时间 事务日志从主节点传输到从节点的时间࿰…...
Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算
笔者在近一两年接触了Clickhouse数据库,在项目中也进行了一些实践,但一直都没有一些技术文章的沉淀,近期打算做个系列,通过一些具体的场景将Clickhouse的用法进行沉淀和分享,供大家参考。 首先我们假设一个Clickhouse数…...
做好“关键基础设施提供商”角色,亚马逊云科技加快生成式AI落地
一场关于生产力的革命已在酝酿之中。全球管理咨询公司麦肯锡在最近的报告《生成式人工智能的经济潜力:下一波生产力浪潮》中指出,生成式AI每年可能为全球经济增加2.6万亿到4.4万亿美元的价值。在几天前的亚马逊云科技纽约峰会中,「生成式AI」…...
ARM Cortex-M处理器仿真与Iris组件深度解析
1. ARM Cortex-M系列处理器仿真技术概述在嵌入式系统开发领域,处理器仿真技术已经成为不可或缺的工具链环节。作为ARM架构中专门面向微控制器市场的产品线,Cortex-M系列处理器凭借其优异的能效比和实时性能,广泛应用于物联网终端、工业控制和…...
PIM-LLM:1-bit量化大语言模型的混合内存计算架构
1. 项目概述PIM-LLM是一种创新的混合内存计算架构,专门为1-bit量化的大语言模型(LLM)设计。这个架构通过结合模拟内存计算(PIM)和数字脉动阵列,实现了对低精度和高精度矩阵乘法运算的高效加速。在边缘AI加速…...
Arm Neoverse CMN-650时钟与电源管理架构解析
1. Arm Neoverse CMN-650时钟与电源管理架构解析在现代SoC设计中,时钟与电源管理子系统如同城市的水电供应网络,其设计优劣直接决定了系统性能与能耗效率的平衡。Arm Neoverse CMN-650作为新一代互连架构,通过创新的时钟域划分和电源域管理机…...
轻量级网络监控工具nmer:配置即代码的探测与响应实践
1. 项目概述:一个轻量级网络监控与响应工具最近在梳理内部网络监控体系时,我重新审视了一个老伙计——psterman/nmer。这可不是什么新潮的框架,但在特定场景下,它的简洁和高效总能让人眼前一亮。简单来说,nmer是一个用…...
两种 Linux 发行版:Ubuntu 与 CentOS Shell 环境核心差异对比(查看 Linux 版本,Hadoop 是什么)
Xshell5作为远程连接工具,可通过命令行查看连接的Linux服务器版本。推荐使用cat /etc/os-release或lsb_release -a查看发行版信息,特定系统可用cat /etc/redhat-release(CentOS)或cat /etc/debian_version(Debian)。内核版本用uname -r查看。Ubuntu和Cen…...
告别PX4的玄学Bug:手把手教你用Mission Planner给ArduPilot飞控做全套硬件校准(附电调校准避坑指南)
告别PX4的玄学Bug:手把手教你用Mission Planner给ArduPilot飞控做全套硬件校准(附电调校准避坑指南) 作为一名长期与无人机打交道的开发者,我深知飞控系统稳定性对飞行安全的重要性。在尝试过PX4和ArduPilot两大主流固件后&#x…...
AMD处理器硬件深度调试终极方案:SMUDebugTool完全实战手册
AMD处理器硬件深度调试终极方案:SMUDebugTool完全实战手册 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...
如何打造高转化率的Primer CSS营销链接:CTA与导航链接设计指南
如何打造高转化率的Primer CSS营销链接:CTA与导航链接设计指南 【免费下载链接】css Primer is GitHubs design system. This is the CSS implementation 项目地址: https://gitcode.com/gh_mirrors/cs/css Primer CSS作为GitHub的官方设计系统,提…...
【模块化设计-13】OAM 线程模块详解
该模块是基于 RT-Thread 实时操作系统实现的一个 OAM(Operation, Administration and Maintenance,操作、管理和维护)专用线程模块,核心功能是提供独立的 OAM 业务处理线程、消息队列机制和定时器管理能力,适用于嵌入式…...
AI驱动数字营销平台架构解析:从工作流引擎到品牌个性化
1. 项目概述:一个AI驱动的数字营销代理平台最近在GitHub上看到一个挺有意思的项目,叫windagency/valora.ai。乍一看这个仓库名,可能很多人会有点懵,这到底是做什么的?是AI工具,还是营销平台?作为…...
