QTest测试使用
1.安装gcov、lcov工具
sudo apt-get install gcov
sudo apt-get install lcov
//安装成功与否可以使用 * --version 查看版本号
2.修改Qt配置文件TICPSH_PENNY_ETH.pro
QT += core testlib //加载QTest所需库
QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage
QMAKE_CXXFLAGS += --coverage
LIBS += -lgcov //设置命令行参数
3.测试步骤(参考博客2)
1.新建测试类
注意测试类需继承QOBject,编写测试代码需要引入头文件
例:
commoditytest.h
commoditytest.cpp
主函数
比较宏
QBENCHMARK 计算运行时间,多次运行测量
QBENCHMARK_ONCE 计算运行时间,单次运行测量
QCOMPARE 比较是否相等
QEXPECT_FAIL 将下一个QCOMPARE或QVERIFY标记为预期测试,如果预期测试没有通过,可以终止剩余当前单元测试【可设置测试终止或继续】
QFAIL 强制抛出错误并打印信息
QFETCH 创建临时变量,从当前数据表中读取数据
QFETCH_GLOBAL 创建全局变量,从全局数据表中读取数据,必须有initTestCase_data
QFINDTESTDATA 从路径获取测试数据
QSKIP 停止测试,但不会将失败添加到失败日志
QTEST 可替代QFETCH+QCOMPARE的便利写法,不需要QFETCH来生成变量
QTEST_MAIN 创建一个main函数,并实例化应用程序对象和测试用例对象,QT_WIDGETS_LIB->QApplication(Qt+=widgets),QT_GUI_LIB->QGuiApplication(Qt+=gui),其他->QCoreApplication
QTEST_APPLESS_MAIN 与QTEST_MAIN相似但不实例化QApplication
QTEST_GUILESS_MAIN 与QTEST_MAIN相似只实例化QCoreApplication
QTRY_COMPARE_WITH_TIMEOUT 与QCOMPARE相似,但重复执行两个值的比较,直到两个值相等或者达到超时时间
QTRY_COMPARE 执行QTRY_COMPARE_WITH_TIMEOUT,并将超时时间设置为5秒
QVERIFY 判断条件是否为true,如果为true则继续执行测试,否则记录失败日志并且不再执行单元测试
QVERIFY2 与QVERIFY相似,但可以自定义失败日志
QTRY_VERIFY_WITH_TIMEOUT 与QVERIFY相似,但重复执行条件的判断,直到条件为true或者达到超时时间
QTRY_VERIFY 执行QTRY_VERIFY_WITH_TIMEOUT,并将超时时间设置为5秒
QTRY_VERIFY2_WITH_TIMEOUT 与QVERIFY2相似,但但重复执行条件的判断,直到条件为true或者达到超时时间
QTRY_VERIFY2 执行QTRY_VERIFY2_WITH_TIMEOUT,并将超时时间设置为5秒
QVERIFY_EXCEPTION_THROWN 执行表达式,并判断语句抛出的异常是否与预期异常相等
QWARN 主动添加警告日志(线程安全)
自带函数
initTestCase()
//在第一个测试函数运行前调用
cleanupTestCase()
//在终于第一个测试函数运行后调用
init()
//在每个测试函数运行前被调用
cleanup()
//在每个测试函数运行后调用
4.生成测试报告
在生成的工作目录下打开终端,执行以下命令:
lcov -c -d . -o 'test.info' -b . //收集测试信息生成*.info文件
genhtml test.info //将info文件生成html文件
firefox index.html //查看生成的html文件
5.用例输入