第一次使用QtTest

之前c++代码用过cppunit,然后开始用gtest,对于qt代码,第一次尝试使用QtTest框架。
要使用QtTest,首先需要在.pro文件中增加配置,让qmake知道要添加qt测试框架:
[cce]
CONFIG += qtestlib
[/cce]
然后,就可以新建一个cpp文件,编写测试代码了:
[cce lang=”cpp”]
#include <QtTest/QtTest>

#include "../src/twitterapi.h"

class TwitterApiTest : public QObject
{
Q_OBJECT
private slots:
void testRequestToken();
};

void TwitterApiTest::testRequestToken()
{
Setting s;
s.twitterUrl = "https://api.twitter.com/1";

TwitterApi api(&s);
QSignalSpy spy(&api, SIGNAL(authUrlCreated(bool,QString,Token*)));
bool result = api.authUrl();

QVERIFY(result);

QTest::qWait(10000);

QVERIFY(spy.isValid());
QCOMPARE(spy.count(), 1);

QList<QVariant> arguments = spy.takeFirst();
QVERIFY(arguments.at(0).toBool() == true);
qDebug() << arguments.at(1);
}

QTEST_MAIN(TwitterApiTest)

#include "TwitterApiTest.moc"
[/cce]
QtTest相关的函数和宏都在QtTest/QtTest中,直接都include进来即可,我主要用到了里面的QSignalSpy类。
测试类和普通qt类一样,需要继承QObject,所有的测试函数,都声明为私有槽函数(private slots)。这里的测试函数,主要使用了QSignalSpy类,可以用这个类来检测对应的信号是否已经发出,还可以获取信号的参数。QtTest还提供了一些断言宏,具体可以查看assistant中QTest的文档。
每个测试类都需要使用QTEST_MAIN宏生成一个最终的main函数,make之后会生成一个对应的可执行文件。最后,如果测试类声明和实现在一个cpp文件中,需要手工include生成的moc文件。
感觉QtTest没有像cmake中的test那样好的和makefile进行结合,没有增加执行测试的阶段。需要手工运行生成的可执行程序:
[cce]
jinlingjie@babydragon ~/work/aflatoxin-build-desktop-Qt_in_PATH___ $ ./aflatoxin
********* Start testing of TwitterApiTest *********
Config: Using QTest library 4.8.1, Qt 4.8.1
PASS : TwitterApiTest::initTestCase()
QWARN : TwitterApiTest::testRequestToken() Don’t know how to handle ‘Token*’, use qRegisterMetaType to register it.
QDEBUG : TwitterApiTest::testRequestToken() oauth head: “OAuth oauth_callback=”——-“,oauth_consumer_key=”———–“,oauth_nonce=”———–“,oauth_signature=”———–“,oauth_signature_method=”HMAC-SHA1″,oauth_timestamp=”1333445034″,oauth_version=”1.0″”
QWARN : TwitterApiTest::testRequestToken() content-type missing in HTTP POST, defaulting to application/octet-stream
QDEBUG : TwitterApiTest::testRequestToken() request token reply: “oauth_token=———&oauth_token_secret=———–&oauth_callback_confirmed=true”

QDEBUG : TwitterApiTest::testRequestToken() QVariant(QString, “https://api.twitter.com/oauth/authorize?oauth_token=————-“)
PASS : TwitterApiTest::testRequestToken()
PASS : TwitterApiTest::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
********* Finished testing of TwitterApiTest *********
[/cce]

转载自:https://coolex.info/blog/306.html

时间: 2024-08-04 11:37:12

第一次使用QtTest的相关文章

第一次使用Android Studio时你应该知道的一切配置

[正文] 最近网上流行起了程序猿鼓励师的段子,鼓励师的报酬比程序猿还高,想想也确实是个不错的职位,什么?你没听说过?翻到本文最后面,爆图. 放假前的福利,之前写一篇博客:使用Android Studio搭建Android集成开发环境(图文教程),之前的那篇可以凑合着看一下.当时Andriod Studio还处在测试版,现在Android Studio已经升级到稳定版1.1了,决定还是重新写一下图文教程,让那些还在死抱着eclipse不放的人(包括自己)跨过这道坎.   [开发环境] 物理机版本:

js-Touch第一次Touch 是没问题的,只要停住后Touch 就不会在触发了

问题描述 Touch第一次Touch 是没问题的,只要停住后Touch 就不会在触发了 http://output.jsbin.com/jumididiti 测试地址.. F12手机上调试..主要原因是滑动的时候加载后面图片 修改src 的问题.如果不修改src 是正常的.. 解决方案 有源码的地址 :http://jsbin.com/jumididiti/edit?htmloutput 大神们求救..

ios-xcode7 第一次安装显示导航页面,之后直接进入主页

问题描述 xcode7 第一次安装显示导航页面,之后直接进入主页 xcode7 中,新出了launchscreen.storyboard,我想做一个第一次安装显示一个导航界面,之后每次打开直接进入主界面,请问怎么搞? 解决方案 你在打开xcode左上角xcode黑体菜单下拉有preferrence,可以设置全部的,还有window菜单里有welcome to xcode也可以打开那个的,你自己不小心关的 解决方案二: 类似于欢迎页?在appdelegate里添加view到window上就行了,至

javascript-js appendchild 第一次追加后,父元素不显示被追加的元素

问题描述 js appendchild 第一次追加后,父元素不显示被追加的元素 document.createElement(""div"");生成新的div元素,使用appendchild追加在其父元素下,为什么第一次appendchild的div不显示,而再次appendchild之后,第一次追加的div和后一次追加的div会一起显示出来,代码如下:请帮忙解答下,谢谢! div_left_child=document.createElement("&q

matrix-C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽

问题描述 C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽 这是头文件 #include #ifndef MATRIX_H_ #define MATRIX_H_ class matrix { private: double a[20][20]; int m,n; public: matrix(); matrix(const matrix&a); ~matrix(); matrix operator=(const matrix&a); friend void

android socket问题,第一次发数据很慢

问题描述 android socket问题,第一次发数据很慢 我建立的socket在刚连接上网络助手的时候,为什么第一次发消息很慢(很少情况下能正常发送)第一次发送成功后再发送就很快.我知道应该和socket的内部实现机制有关,但不知道为什么.有没有大神帮解释下?谢谢,谢谢,谢谢.下面是发送数据的代码,发的数据是十六进制. public void send_data(){ String temp = """"; try { out = new PrintWriter

第一次正式java web开发项目的总结

去年下半年到现在,因为公司人员流动,也有好几个新进的员工分给我来带领,也有刚从学校出来的,在和他们交流的过程中,不由的想起自己刚刚进入这行的一些感想. 记得自己当初写过一篇总结的,我想这些对于刚出校门没什么工作经验的程序员应该会有一些帮助,但是却怎么也无法在csdn博客列表中找到这片文章. 后来无意中发现它竟然跑到了我的回收站中,我已忘记是因为什么原因使他跑到了这里,但是我想恢复的时候又发现有点坑的是,csdn回收站的东西无法恢复,因此只好重新发表了. 以下是当时的总结:   从学校走出来,转眼

神奇-js中分页,第一次点下一页时没问题,总共13页,第二次点击下一页的时候就出错

问题描述 js中分页,第一次点下一页时没问题,总共13页,第二次点击下一页的时候就出错 function(param currentpage totalPage){ alert(""currentpage:""+currentpage);//2 alert(""totalPage:""+totalPage);//13 alert( currentpage > totalPage ) alert( currentpage

新手第一次建网站经历

虽然年纪已不小了,已经到了而立之年,但看到大家都在建自己的网站,不禁也跃跃欲试.所以也乘五一节七天放假之机,把6个月大的儿子寄住在外婆家,依葫芦画瓢建了个有关QQ空间代码的垃圾站.虽然没有像自己想像的那样成为日访问量过千的大站,但从5月14日上传空间以来,日平均访问量也在200以上.蛮有成就感的,写篇文章与大家分享建站心得. 第一步购买域名.现在许多网站可以购买域名,.cn的域名只要1元钱,在百度里搜索cn=1就有很多.最适合第一次做站了,不必花大资金投入.我自己在西部数码网站购买了一个www.