第十章
10.1 Qt Creator调试
在项目中如果要在调试中启动程序,可以使用下列方法:
按下F5键、使用“Start Debugging”按钮、主菜单选项卡
进入调试模式后还允许以下操作:
在代码中添加、启用、禁用以及查看断点
中断正在运行的程序和进程来查看和检查代码
查看和检查函数的调用堆栈
查看和检查变量
反汇编源代码
在代码中设置了断点之后,无论何时程序到达代码中的该行,程序都将中断。此时可以使用代码编辑器下的空间控件来执行下列任务:
Continue:继续执行该程序的剩下部分
Step Over:用于在不进入可能会改变调试指针当前位置的函数调用的情况下,执行下一行代码
Step Into:与Step up相反
Step out:退出函数调用,返回调试时的节点
10.2 Qt测试框架
单元测试是指对应用程序的控件和部分(单元)进行测试,以确保它们能够按预期进行工作。
10.2.1 创建单元测试
若要创建单元测试,可以子类化QObject类,并向其中加入Qt测试框架所需要的槽,以及一个或者多个用于执行各种测试的槽(测试函数)。除了测试函数以外,每个测试类中可以存在下面的槽(私有槽) ,并由Qt Test调用:
initTestCase:在第一个测试函数之前调用,如果它失败了,整个测试失败
cleanupTestCase:在最后一个测试函数之后调用
init:在调用每个测试函数之前调用,如果失败将不再执行前面的测试函数
cleanup:在调用每个测试函数之后调用
为了能够编写适当的测试函数,可以在每一个测试函数中使用下面的宏,这些宏是在Qt Test中定义的:
QVERIFY:可用于检查是否满足一个条件
QTRY_VERIFY_WITH_TIMEOUT:给定条件,要么达到指定超时,要么达到条件
QTRY_VERIFY:类似上一个,超时默认为5秒
QCOMPARE:用来比较实际值和期望值
QCOMPARE_COMPARE_WITH_TIMEOUT:也类似前文
10.2.2 数据驱动测试
10.2.3基准测试
10.2.4 GUI测试
可以使用QTest命名空间中的以下函数来编写用于执行GUI测试的单元测试。注意,几乎所有的这些函数都依赖于一个事实:Qt中所有控件和GUI组件都是QWidget的子类:
keyClick:模拟按键 keyClicks:与keyClick类似
keyPress:只模拟按下按键 keyRelease:只模拟按键释放
keyEvent:键盘模拟函数的高级版本 mouseClick:模拟单击鼠标
mouseDClick:模拟双击鼠标 mousePress:模拟按下鼠标不释放
mouseRelease:只模拟释放 mouseMove:模拟鼠标光标的移动