如何使用GTest对Qt工程代码做unit test(在ubuntu环境下)

 

一.前言

最近,笔者参与开发了一个项目,在ubuntu环境下使用qt作为UI framework开发手机上的应用程序,工程也是用qtcreator创建的。

作为程序开发者来说,开发出的功能不仅要符合需求,而且需要保证代码的健壮性,这就需要对所开发的代码做单元测试。

在本文中,笔者将会介绍一下如何使用gtest(即google test)来对已有的Qt工程代码做单元测试。

关于gtest的知识,笔者推荐《玩转Google开源C++单元测试框架Google Test系列(gtest)》系列,链结如下:

http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

 

下面是笔者的目录结构图,读者可以根据自己的目录结构对本文中出现的配置文件进行修改。

 

 

二. 下载

1.     下载安装QtSDK,里面包含qtcreator工具。下载路径:

         http://qt.nokia.com/downloads

         笔者下载的是liunx下的4.8版本。文件名为:

         Qt_SDK_Lin32_offline_v1_2_en.run

2.     下载gtest包。下载路径:

         http://code.google.com/p/googletest/downloads/detail?name=gtest-1.6.0.zip&can=2&q=

        笔者下载的是1.6.0版本,包名为:gtest-1.6.0

 

三.安装QtSDK

1.     修改安装文件的属性,使之可执行

        chmod +x Qt_SDK_Lin32_offline_v1_2_en.run

2.     安装QtSDK

        ./ Qt_SDK_Lin32_offline_v1_2_en.run

3.     按提示步骤安装完成QtSDK

         qtcreator 将会被安装在 ~/QtSDK/QtCreator/bin/qtcreator目录下,进入该目录

         执行qtcreator即可打开qtcreator,利用该IDE可以创建qt的工程。

         qtcreator

 

 

四. 创建一个qt示例工程

(这里,我创建了一个比较简单的不带UI界面的Qt 控制台应用当做例子)

1.      打开qtcreator, 选择“文件”->“新建工程或文件“, 在模板里选择”其他项目”,然后在右边的选择框里选择”Qt 控制台应用”, 然后确定工程名称(我的工程名为   qt_test_app)和工程路径,后面的选项一路默认就行了。

        执行完成,最后会生成一个Qt工程qt_test_app

        该工程里只有一个文件main.cpp,qtcreator已经产生了部分代码。

2.     新建并添加addTest.h和 addTest.cpp 到工程中

        在工程名qt_test_app上点击右键,选择“添加新文件”,选择“c++ 头文件”

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
使用Test 进行单元测试时,通常不需要使用 `connect` 函数。GTest 框架提供了一系列的宏定义和函数,可以方便地进行测试用例的编写和执行。以下是一个简单的示例代码: ```cpp #include <gtest/gtest.h> // 要测试的函数 int add(int a, int b) { return a + b; } // 定义测试用例 TEST(AddTest, PositiveNumbers) { EXPECT_EQ(add(1, 2), 3); } TEST(AddTest, NegativeNumbers) { EXPECT_EQ(add(-1, -2), -3); } // 执行测试 int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } ``` 在上面的代码中,我们定义了一个 `add` 函数,并编写了两个测试用例来测试这个函数的功能。`TEST` 宏定义用于定义一个测试用例,第一个参数是测试用例的名称,第二个参数是测试用例中的测试点名称。在测试用例中,我们使用了 `EXPECT_EQ` 函数来判断实际结果和期望结果是否相等。 在 `main` 函数中,我们使用 `testing::InitGoogleTest` 函数来初始化 GTest 框架,然后使用 `RUN_ALL_TESTS` 函数来执行所有的测试用例。 如果你想要在测试用例中使用 Qt 的信号槽机制,可以使用 `QSignalSpy` 类来捕获信号并检查槽函数是否被正确执行。以下是一个示例代码: ```cpp #include <gtest/gtest.h> #include <QCoreApplication> #include <QSignalSpy> class MyObject : public QObject { Q_OBJECT public: MyObject(QObject* parent = nullptr) : QObject(parent) {} signals: void mySignal(); public slots: void mySlot() { // do something } }; // 定义测试用例 TEST(SignalTest, MyObjectTest) { QCoreApplication app(argc, argv); MyObject obj; QSignalSpy spy(&obj, &MyObject::mySignal); // 发射信号 emit obj.mySignal(); // 检查槽函数是否被正确执行 EXPECT_EQ(spy.count(), 1); } // 执行测试 int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } ``` 在上面的代码中,我们定义了一个名为 `MyObject` 的 QObject 子类,并在其中定义了一个信号和一个槽函数。在测试用例中,我们创建了一个 MyObject 对象和一个 QSignalSpy 对象,并使用 `emit` 关键字来发射信号。然后使用 `QSignalSpy::count` 函数来检查槽函数被执行的次数是否为 1。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值