测试是重中之重基础

------------------------------------------------------------------------------------------------华丽的开始线------------------------------------------------------------------------------------------------------------

首先看工程目录:

很简单就一个main文件TestDatas和unittest.cpp文件

那么我们来看main文件:

#include "unittest.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);UnitTest w;w.show();return a.exec();
}

main没有什么好看的;

再来看看unittest.h文件:

#ifndef UNITTEST_H
#define UNITTEST_H#include <QMainWindow>
#include "ui_unittest.h"
#include <qtest.h>
#include <qwidget.h>
class UnitTest : public QMainWindow
{Q_OBJECTpublic:UnitTest(QWidget *parent = 0);~UnitTest();void testDataIsSame(QString value1,QString value2);
private:Ui::UnitTestClass ui;
};
#endif // UNITTEST_H

就写了一个testDataIsSame函数

再来看看unittest.cpp文件:

#include "unittest.h"
#include "TestDatas.h"
UnitTest::UnitTest(QWidget *parent) : QMainWindow(parent)
{ui.setupUi(this);testDataIsSame("1","2");
}void UnitTest::testDataIsSame(QString value1, QString value2){TestData tq; //这句是执行测试的最重要的地方QTest::qExec(&tq);//用户测试一个方法或者函数执行的时间
}UnitTest::~UnitTest()
{} 

就写了一个testDataIsSame函数实现

那么我们再来看看TestDatas.h文件:

#pragma once
#include <QtTest/QtTest>
#include <QLineEdit>
class TestData : public QObject
{Q_OBJECT
public:TestData();~TestData();
//每个private的slot都会被测试函数自动调用
private slots:   /*测试int类型数据*///对数据进行检测void testDataIsSame(); // 以“_data”结尾的函数向对应的测试函数提供测试数据  void testDataIsSame_data();/*测试QString类型的数据*///对数据进行检测void testDataIsStrSame();// 以“_data”结尾的函数向对应的测试函数提供测试数据  void testDataIsStrSame_data();/*测试GUI*///对数据进行检测void testGui();// 以“_data”结尾的函数向对应的测试函数提供测试数据  void testGui_data();public://测试运行速度void writeText();
};

注释已经很清楚了

那么我们再来看看TestDatas.cpp文件:

#include "TestDatas.h"
TestData::TestData()
{}
TestData::~TestData()
{
}void TestData::writeText(){QString text = "A";text.toLower();
}
void TestData::testDataIsSame(){// 获取测试数据  QFETCH(int, value1); QFETCH(int, value2); // 如果输入的两个参数不同,则会被认为测试失败  QCOMPARE(value1, value2);
}void TestData::testDataIsStrSame(){// 获取测试数据  QFETCH(QString, value1);QFETCH(QString, value2);// 如果输入的两个参数不同,则会被认为测试失败  QCOMPARE(value1.toLower(), value2);
}void TestData::testDataIsStrSame_data(){// 添加数据列  QTest::addColumn<QString>("value1"); QTest::addColumn<QString>("value2"); // 添加测试数据  QTest::newRow("lower") << "hello" << "hello"; QTest::newRow("mixed") << "HeLlOL" << "hello"; QTest::newRow("upper") << "HELLO" << "hello";
}void TestData::testDataIsSame_data(){// 添加数据列  QTest::addColumn<int>("value1"); QTest::addColumn<int>("value2"); // 添加测试数据 QTest::newRow("v1") << 1 << 1; QTest::newRow("v3") << 2 << 2; QTest::newRow("v2") << 1 << 2;
}void TestData::testGui(){QFETCH(QTestEventList, events);QFETCH(QString, expected);QLineEdit lineEdit;// 模拟按键事件,并比较结果  events.simulate(&lineEdit);/*测试两个数据是否相同*/QCOMPARE(lineEdit.text(), expected);
}
void TestData::testGui_data(){//添加两列的数据QTest::addColumn<QTestEventList>("events");QTest::addColumn<QString>("expected");/*没有肯定失败*/// 添加按键事件  QTestEventList list1;//添加模拟按键alist1.addKeyClick('a');QTest::newRow("测试是否有按键aaaaa:") << list1 << "aaaaa"; /*有空格键可以成功*/QTestEventList list2;list2.addKeyClick('a');list2.addKeyClick(Qt::Key_Backspace);QTest::newRow("测试是否有空格键:") << list2 << "";}

注释已经说得很清楚了,不懂可以留言:本工程是在QT5.3编译通过的,其他的的版本请自己测试:

附上测试结果截图:

有一些失败的我是故意这样的不然全部通过好尴尬:::::


QT5单元测试(按键测试)相关推荐

  1. 如何在单元测试中测试异步函数,block回调这种

    大概有四种方法: runloop 阻塞主进程等待结果 semphaore 阻塞主进程等待结果 使用XCTestExpectation 阻塞主线程等待(我用这个,xcode自带的,为啥不用) 使用第三方 ...

  2. 单元测试怎么测试线程_单元测试线程代码的5个技巧

    单元测试怎么测试线程 以下是一些技巧,说明如何进行代码的逻辑正确性测试(与多线程正确性相对). 我发现本质上有两种带有线程代码的刻板印象模式: 面向任务-许多短期运行的同类任务,通常在Java 5执行 ...

  3. ad采样做按键开关_磐石按键测试机解决各种按键测试问题

    随着人民生活水平不断的提高,在使用各类产品的过程中,对手指碰触到的按键要求舒适性越来越高,也就是对产品用户体验的享受度越来越高,对手碰触到的各类按键的要求灵敏度.可靠度.舒适性就非常高,所以现在很多产 ...

  4. Python案例:按键测试

    Python案例:按键测试 1.消息类文件message.py import pygameclass Message:def __init__(self, screen, text):self.scr ...

  5. VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试

    1.VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试 https://download.csdn.net/download/qq_39441918/10522539 2.*注意 ...

  6. tSQLt单元测试的测试驱动数据库开发(TDDD)基础

    This article talks about core concepts of test-driven database development followed by creating simp ...

  7. java 单元测试 私有成员变量,单元测试时测试一个private私有方法 - - ITeye博客

    直接上例子 待测试的类 [code="java"]public class Calculator { private int count = 0; private int add( ...

  8. HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

    1.Htc Vive安装教程 在把你的头显与控制器连到电脑上之前,我们首先要做的是先安好基站.基站的背面和低端各有一个固定孔,这样你可以把基站钉在墙上或者买支架将其撑起.大三角架安装示意图 Light ...

  9. STC 单片机行列式按键测试 LCD12864输出显示

    /*控制器测试程序IAP15W4K61S4板2017 1  9***/ /*按键测试按键2017 1 10  12864串口 *******/ #include <STC15F2K60S2.h& ...

  10. .Net core基于xUnit的单元测试查看测试覆盖率

    写代码如何保证代码质量,基本大家都知道要做单元测试,那如何知道你单元测试是不是测试到了所有代码场景呢,这就要通过测试覆盖率来体现了. 测试覆盖率,一般来说主要是Line代码行数覆盖率,同样还会有Bra ...

最新文章

  1. Gartner预测:2025年,人工智能将创造200万个新增就业机会
  2. java集群调度_Cuckoo-Schedule
  3. 【转】 最新版chrome谷歌浏览器Ajax跨域调试问题
  4. html绘制头像原样教程,CSS实例教程:创意CSS3头像展示教程
  5. 关于OnPaint、FormPaint会不停的触发 触发多次的情形---讨论总结
  6. 产品经理如何避免被程序员打?
  7. msyql之解决mysql出现ERROR 1698 (28000): Access denied的问题
  8. 豆瓣app签名sig
  9. CTEX编译Xelatex以及如何更新Miktex
  10. 中职计算机组装与维修知识点,中职计算机组装与维修的教学分析与对策
  11. 英文科技论文各部分的时态和语态
  12. java设置列宽_java用POI设置Excel的列宽
  13. 黑灰产套现城市消费券大揭秘
  14. 关于在谷歌浏览器,vue-video-player 实现断点续播,currentTime不生效问题
  15. 2018优秀讲师排行榜出炉,将受邀出席开发者大会!
  16. POSCMS4 手机设置
  17. 微信发朋友圈/评论/点赞/搜索/购物车测试点
  18. 达人评测 小米笔记本pro14和联想yoga14s 选哪个好
  19. java 23种设计模式详解
  20. Linux 主机网络接入配置

热门文章

  1. 小博老师解析Java核心技术 ——JDBC普通增删改操作
  2. layui中如何让多个控件在一行显示
  3. 金蝶EAS开发 第一弹:了解开发工具与基本使用(上)
  4. KO88冲销内部订单结算的操作参考
  5. 免费域名证书最新申请方式大全
  6. 如何将WORD中的公式转为图片
  7. 自己感觉比较不错的美剧(记录自己追剧的岁月)
  8. 【opencv4.3.0教程】06之基础结构3之Scalar_结构详解
  9. 蓝牙协议栈HFP SCO连接流程
  10. 多张照片怎么添加时间水印