Qt5开发及实例V2.0-第十五章-Qt单元测试框架

news2024/12/26 23:12:10

Qt5开发及实例V2.0-第十五章-Qt单元测试框架

  • 第15章 Qt 5单元测试框架
    • 15.1 QTestLib框架
    • 15.2 简单的Qt单元测试
    • 15.3 数据驱动测试
    • 15.4 简单性能测试
  • 本章相关例程源码下载
    • 1.Qt5开发及实例_CH1501.rar 下载
    • 2.Qt5开发及实例_CH1502.rar 下载
    • 3.Qt5开发及实例_CH1503.rar 下载
    • 4.Qt5开发及实例_CH1505.rar 下载

第15章 Qt 5单元测试框架

15.1 QTestLib框架

Trolltech公司提供的QTestLib框架,是一种针对基于Qt编写的程序或库的单元测试工具。QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。QTestLib提供了许多特性,见表15.1。
在这里插入图片描述

15.2 简单的Qt单元测试

【例】(简单)(CH1501)首先实现计算圆面积的类,然后编写代码检查该类是否完成了相应的功能。
(1)建立单元测试框架,步骤如下。
选择“文件”→“新建文件或项目”菜单项,出现如图15.1所示的对话框,选择“其他项目”→“Qt单元测试”菜单项,单击“Choose…”按钮继续。
在这里插入图片描述

为测试项目命名,“名称”为“AreaTest”,连续单击“下一步”按钮,直至出现如图15.2所示的对话框,选择项目需要包含的模块。
在这里插入图片描述

单击“下一步”按钮,在如图15.3所示的对话框中设置将要创建的测试类的基本信息。
在这里插入图片描述

(2)计算圆面积类的具体实现步骤如下。
在项目名上单击鼠标右键,选择“添加新文件…”,在如图15.4所示的“新建文件”对话框中,选择新建“C++ Header File”,单击“Choose…”按钮,在弹出的对话框中填写文件的“名称”为“area”。
在这里插入图片描述

头文件“area.h”的具体代码如下:

#include <QObject>
class Area:public QObject
{
    	Q_OBJECT
public:
    Area(){}
    ~Area(){}
    Area(const Area &area)
    {
         m_r = area.m_r;
    }
    Area(int r)
    {
         m_r=r;
    }
    double CountArea()
    {
        return  3.14*m_r*m_r;
    }
private:
    double m_r;
};

(3)测试代码所在的源文件“tst_testarea.cpp”的具体内容如下:

#include <QString>
#include <QtTest>
#include "area.h"
class TestArea : public QObject
{
    Q_OBJECT
public:
    TestArea();
private Q_SLOTS:
    void toAreaTest();					//(a)
};
TestArea::TestArea()
{
}
void TestArea::toAreaTest()
{
    Area area(1);
    QVERIFY(qAbs(area.CountArea()-3.14)<0.0000001);	//(b)
    QVERIFY2(true, "Failure");
}
QTEST_APPLESS_MAIN(TestArea)			//(c)
#include "tst_testarea.moc"

测试函数运行结果如图15.5所示。
在这里插入图片描述

15.3 数据驱动测试

【例】(简单)(CH1502)测试字符串转换为全小写字符的功能。
(1)建立单元测试框架(操作方法同前),具体设置如下。
项目名称:TestQString。
测试类名:TestQString。
测试槽:testToLower。
生成源文件:tst_testqstring.cpp。
(2)源文件“tst_testqstring.cpp”的具体代码。
(3)测试结果如图15.6所示。
在这里插入图片描述

【例】(简单)(CH1503)测试计算圆面积的功能。
(1)建立单元测试框架(操作方法同前),具体设置如下。
项目名称:AreaTest2。
测试类名:TestArea。
测试槽:toArea。
生成源文件:tst_testarea.cpp。
(2)新建C++头文件“area.h”,其具体代码。
(3)在源文件“tst_testarea.cpp”中完成测试工作,其具体实现代码。

(4)测试结果如图15.7所示。
在这里插入图片描述

15.4 简单性能测试

【例】(简单)(CH1504)编写性能测试代码。
(1)建立单元测试框架(操作方法同前),具体设置如下。
项目名称:TestQString2。
测试类名:TestQString2。
测试槽:testBenchmark。
生成源文件:tst_testqstring2.cpp。
(2)源文件“tst_testqstring2.cpp”中具体代码。
(3)测试结果如图15.8所示。
在这里插入图片描述



本章相关例程源码下载

1.Qt5开发及实例_CH1501.rar 下载

Qt5开发及实例_CH1501.rar

2.Qt5开发及实例_CH1502.rar 下载

Qt5开发及实例_CH1502.rar

3.Qt5开发及实例_CH1503.rar 下载

Qt5开发及实例_CH1503.rar

4.Qt5开发及实例_CH1505.rar 下载

Qt5开发及实例_CH1505.rar

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

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

相关文章

【李宏毅 | 深度学习】自注意力机制(Self-attention)

这里写目录标题 引言Sequence LabelingSelf-attention矩阵乘法Muti-head Self-attention&#xff08;多头注意力机制&#xff09; 引言 以往我们遇到的深度学习问题中&#xff0c;对于神经网络的输入一般都是一个向量&#xff0c;输出可能是一个类别。如果增加输入的复杂度&am…

基于open CV实现YOLOv3复现_预测阶段和后处理阶段

基于open CV实现YOLOv3复现_预测阶段和后处理阶段 1.导入所需的库&#xff1a;2.对输入的图像进行resize3.将图像输入yolov3的网络中进行预测&#xff0c;对三个特征层进行解码。4.非极大值抑制来去除多余的预测框完整代码 当训练好了模型后&#xff0c;用训练好的权重文件进行…

tftpd文件传输工具的学习记录

1.目的&#xff1a;在SOC板上的linux系统和本地电脑的windows系统进行文件的传输。 2.在windows中安装tftp服务器,其下载的文件如下&#xff1a; 链接: https://pan.baidu.com/s/1YN5WxcjqCJLHTtjhUtKbjg 提取码: 3cg9 3.打开软件&#xff0c;在当前目录下选择windows传输的…

TCP协议中常见的问题

文章目录 TCP协议中常见的问题谈一谈对OSI七层模型和TCP/IP四层模型的理解&#xff1f;谈谈TCP协议的3次握手过程&#xff1f;TCP协议为什么要3次握手&#xff1f;2次&#xff0c;4次不行吗&#xff1f;谈谈TCP协议的四次挥手过程&#xff1f;什么是流量控制&#xff1f;什么是…

报错处理:Error: Redis server is running but Redis CLI cannot connect

嗨&#xff0c;读者朋友们&#xff01;今天我来跟大家分享一个我在运维过程中遇到的一个关于Linux上运行Redis服务时的报错及解决方法。 报错信息如下&#xff1a; Error: Redis server is running but Redis CLI cannot connect 这个报错信息表明Redis服务器已经运行&#xff…

stm32之GPIO库函数点灯分析

stm32官方为了方便开发者&#xff0c;利用CubeMX 生成HAL库有关的C代码。HAL库就是硬件抽象层(hardware abstraction layer)&#xff0c;生成一系列的函数帮助我们快速生成工程&#xff0c;脱离复杂的寄存器配置。stm32相对于51来功能强大&#xff0c;但是寄存器的数量也不是一…

动手吧,vue数字动画

数字动画&#xff0c;有数字的地方都能用上&#xff0c;拿去吧&#xff01; 效果&#xff1a; 1、template部分 <template><div class"v-count-up">{{ dispVlaue }}</div> </template> 2、js部分 export default {data() {return {timer…

版本动态 | SolidUI 0.3.0 版本发布

文章目录 背景发版清单功能部署 示例html生成模型选择数据源 详细指引贡献者如何成为贡献者 背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一…

摄像头工程师说 Camera - 数据格式 RAW、RGB(1)

Camera - 数据格式 RAW、RGB Camera 数据格式-RAW、RGB从摄像头工作的基本原理说起回归本质-图像色彩的几种表示方法RGB 三原色RAW RGB 格式诞生RAW8 VS RAW10真彩色-RGB888、BGR888 格式的引入数据量小点的 RGB 格式-RGB565、RGB555用位数表示的 RGB 格式RGB24&#xff1a;RGB…

iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!

iPhone 15 系列机型已于今日正式发售&#xff0c;为解决iPhone15这些机型出现的数据迁移问题&#xff0c;苹果紧急发布了 iOS 17.0.2 更新&#xff0c;内部版本号为 21A350。 需要注意的是&#xff0c; iOS 17.0.2 更新仅适用于 iPhone 15、iPhone 15 Plus、iPhone 15 Pro 和 …

HTML5福利篇--使用Canvas画图

目录 一.Canvas元素 1.Canvas元素定义 2.使用JavaScript获取页面中的Canvas对象 二.绘制图形 1.绘制直线 2.绘制矩形 &#xff08;1&#xff09;rect() &#xff08;2&#xff09;strokeRect() &#xff08;3&#xff09;fillRect()和clearRect()函数 3.绘制圆弧 4.…

华为云云耀云服务器L实例评测 | 基于minikube搭建单节点kubernetes集群

目录 1 安装Docker2 conntrack-tools3 安装minikube4 下载二进制&#xff1a;kubeadm、kubectl、kubelet5 准备镜像6 启动minikube7 简单测试 ​ Minikube 是一个使用golang开发的单节点kubernetes集群环境&#xff0c;在资源紧张的情况下&#xff0c;可以用于快速搭建kubernet…

项目进展(一)-晶振正常输出、焊接驱动芯片、查找芯片手册并学习

今天的主要工作集中在博士师兄的项目上&#xff0c;效率偏低&#xff0c;主要是一中午的时间都卡在晶振上。在焊接完芯片和晶振之后&#xff0c;测试晶振输出引脚无输出&#xff0c;所以就开始找各种博客&#xff0c;寻找晶振不起振的原因&#xff0c;在下面两篇文章中找到了答…

基于骨架的动作识别:SkeleTR: Towrads Skeleton-based Action Recognition in the Wild

论文作者&#xff1a;Haodong Duan,Mingze Xu,Bing Shuai,Davide Modolo,Zhuowen Tu,Joseph Tighe,Alessandro Bergamo 作者单位&#xff1a;The Chinese University of Hong Kong; AWS AI Labs. 论文链接&#xff1a;http://arxiv.org/abs/2309.11445v1 内容简介&#xff1…

JavaScript+canvas实现粒子动画效果

1.HTML部分 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>粒子效果</title><style&g…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(7)聊天机器人 / ChatBot

聊天机器人 / ChatBot 使用大型语言模型来构建你的自定义聊天机器人 在本视频中&#xff0c;你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。 环境准备 首先&#xff0c;我们将像往常一样设置OpenAI Python包。 import os import openai from dotenv import…

图像练习-答题卡opencv(02)

原图 结果 代码 // Load source imagecv::Mat src cv::imread("answer_card.jpg", cv::IMREAD_COLOR);if (src.empty()){return;}cv::Mat gray;cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);cv::Mat binary;double value cv::threshold(gray, binary, 0, 255, …

用PHP实现极验验证功能

极验验证是一种防机器人的验证机制&#xff0c;可以通过图像识别等方式来判断用户是否为真实用户。在实现极验验证功能时&#xff0c;您需要进行以下步骤&#xff1a; 1 注册极验账号&#xff1a; 首先&#xff0c;您需要在极验官网注册账号并创建一个应用&#xff0c;获取相应…

x_ctf_b0verfl0w

x_ctf_b0verfl0w Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位&#xff0c;保护全关&#xff0c;写shellcode int vul() {char s[32]; // [esp18h] [eb…

mac安装 scala 详细教程(包含在 idea 上使用,以及scala插件安装)

目录 一 下载解压 二 配置环境变量 三 测试 scala 四 idea 编写 scala 文件 1. 安装插件 scala 插件 2. 使用 idea 创建 scala 工程 3. 使用idea 创建 maven 工程开发 scala 一 下载解压 去官网选择合适的版本下载 官网地址https://www.scala-lang.org/download/all.…