Qt高级 |
您所在的位置:网站首页 › 鼠标宏的原理和使用方法 › Qt高级 |
Qt高级——QTestLib单元测试框架
一、QTestLib简介
1、QTestLib简介
QTestLib是Qt提供的一种针对基于Qt编写的程序或库的单元测试框架。QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。 2、QTestLib特性QTestLib是为了简化QT程序或库的单元测试工作而设计的。 QTestLib特性如下: A、轻量级:QTestlib只包含6000行代码和60个导出符号 B、自包含:对于非GUI测试,QTestlib只需要Qt核心库的几个符号。 C、快速测试:QTestlib不需要特殊的测试执行程序,不需要为测试而进行特殊的注册。 D、数据驱动测试:一个测试程序可以在不同的测试数据集上执行多次。 E、基本的GUI测试:QTestlib提供了模拟鼠标和键盘事件的功能。 F、基准测试:QTestLIB支持基准测试并提供多种测量后端。 G、IDE友好:QTestlib的输出信息可以被Visual Studio和KDevelop解析。 H、线程安全:错误报告是线程安全的、原子性的。 J、类型安全:对模板进行了扩展使用,防止由隐式类型转换引起的错误。 K、易扩展:用户自定义类型可以容易地加入到测试数据和测试输出中。 3、QTestLib API所有公有的方法都在QTest命名空间中。另外,QSignalSpy类为Qt的信号和槽提供了简单的内省机制。 4、AutoTest插件默认测试结果以纯文本形式显示在控制台(应用程序输出标签),不够直观,可使用AutoTest插件实现可视化效果。
通过Help->About Plugins->Utilities,选中AutoTest,重启Qt Creator,然后在下方会多出TestResults的标签,可直接在此标签点击上方的运行按钮运行所有测试,同时在“Tools-Tests-Run All Tests”也可运行所有测试。
此插件可以在运行单元测试后以红、绿色表示明确标记处运行结果,并且以Case为单位显示,可以展开看到具体每一个测试用例的结果。
原理:输入测试数据表和结果数据表,与实际值比较。 2、测试类测试类需要从QObject类继承,类中需要加入一个或者多个私有槽。每一个私有槽都是一个测试函数,但有4种私有槽不能作为测试函数,它们由测试框架执行,可为整个测试程序或当前测试函数进行初始化和清除操作。 initTestCase():在第一个测试函数执行前调用。 cleanupTestCase():在最后一个测试函数执行后调用。 init():在每一个测试函数执行前调用。 cleanup():在每一个测试函数执行后调用。 如果initTestCase()函数执行失败,任何测试函数都不会执行。如果init()函数执行失败,紧随其后的测试函数不会被执行,测试会继续处理下一个测试函数。 QTest::qExec(QObject* testClassObject)函数用于执行测试对象中所有的测试函数。 3、测试函数对于一个要测试的目标函数,需要使用两个函数进行测试:testFunctionName()和testFunctionName_data()。 testFunctionName_data:数据提供,在函数体中写入测试数据。 testFunctionName:测试的实体,读取testFunctionName_data函数中的数据表,并逐行进行测试。如果测试结果与数据表中的结果不同,则认为测试失败。 4、测试数据构建数据由QTest::addColumn < T > (name)和QTest::newRow(name) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |