51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1732|回复: 0
打印 上一主题 下一主题

google test 安装

[复制链接]
  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 523 天

    连续签到: 5 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-26 16:29:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    本帖最后由 测试积点老人 于 2018-12-26 16:31 编辑

    Google Test (libgtest) 是由谷歌开发的一款基于xunit框架的跨平台单元测试框架,C#上的NUnit,Java的JUnit写单元测试非常容易,也不乏可视化工具与IDE集成插件,深受喜欢测试区洞开发的程序员的喜爱。但对于C++来说,写测试就看着麻烦一些。但如果用习惯了,google test还是不错的。google test更多的信息这里就不赘述了。下面根据我的实践,总结以下安装和第一次编写google test所需要做的事情,网上虽然有些教程,但我遇到的问题往往要综合很多篇文章才能解决。这里我根据自己的实践,综合了几篇文章里的方法,结合ubuntu系统,写了一个更详细的介绍。


    Step1.首先下载安装google test
    对于ubuntu系统,可直接从软件源里下载更新libgtest-dev
    或者 sudo apt-get install libgtest-dev
    这样会自动把googtest的头文件安装到/usr/include/gtest目录下,而源文件在/usr/src/gtest目录下

    也可以自己从https://googletest.googlecode.com上下载gtest的最新版本,不过google code网站经常被墙,到时候可以考虑从别的地方下载。
    比如对于1.6.0版本,wget gtest-1.6.0.zip https://googletest.googlecode.com/files/gtest-1.6.0.zip


    然后解压:
    假定下载到根目录下,直接:

    1. user@linux-name:~<span class="MathJax" id="MathJax-Element-29-Frame" tabindex="0" data-mathml="unzipgtest−1.6.0.zipuser@linux−name: " role="presentation" style="box-sizing: border-box; outline: 0px; display: inline; line-height: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; position: relative;">unzipgtest−1.6.0.zipuser@linux−name: unzipgtest−1.6.0.zipuser@linux−name:  cd gtest-1.6.0
    复制代码

    另外,把下载的gtest源代码下面的include/gtest目录拷贝到全局头文件目录,如:

    1. user@linux-name:~/gtest-1.6.0<span class="MathJax" id="MathJax-Element-30-Frame" tabindex="0" data-mathml="cp−rinclude/gtest/usr/local/include/或user@linux−name: /gtest−1.6.0" role="presentation" style="box-sizing: border-box; outline: 0px; display: inline; line-height: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; position: relative;">cp−rinclude/gtest/usr/local/include/或user@linux−name: /gtest−1.6.0cp−rinclude/gtest/usr/local/include/或user@linux−name: /gtest−1.6.0 cp -r include/gtest /usr/include/
    复制代码


    然后在用到gtest的文件中,用#include

    1. <font size="2">pragma once</font><p style="line-height: 26px;">int fun(int a, int b);</p><p style="line-height: 26px;">sample.cpp
    2. [cpp] view plain copy</p><font size="2">include”sample.h”</font><p style="line-height: 26px;">int fun(int a, int b)
    3. {
    4. return (a-b);
    5. }</p>
    复制代码

    test.cpp这里我们用了四种ASSERTION(断言)方法,给初学者一个印象,具体gtest的各种断言用法还要参考gtest文档

    1. <p style="line-height: 26px;">[cpp] view plain copy</p><font size="2">include “gtest\gtest.h”</font><font size="2">include “sample.h”</font><p style="line-height: 26px;">//TEST (gtest macro),fun:function name to test, “case1” test case name
    2. TEST(fun, case1)
    3. {
    4. EXPECT_LT(-2, fun(1, 2));
    5. EXPECT_EQ(-1, fun(1, 2));
    6. ASSERT_LT(-2, fun(1, 2));
    7. ASSERT_EQ(-1, fun(1, 2));
    8. }</p><p style="line-height: 26px;">/*
    9. int _tmain(int argc, _TCHAR* argv[])
    10. {
    11. testing::InitGoogleTest(&argc, argv);
    12. return RUN_ALL_TESTS();
    13. }
    14. */</p>
    复制代码

    Step3. 编译要测试的代码(假设文件名为sample.cpp)

    g++ -c sample.cpp


    Step4. 编译单元测试的代码(假设文件名为test.cpp)

    g++ -c test.cpp


    Step5. 与libgtest.a或其他需要的库链接、生成可执行程序

    g++ test.o sample.o libgtest.a -o test -lpthread

    -lpthread是必须要有的,否则链接时会出错gtest-all.cc:

    1. (.text._ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv[_ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv]+0x7a): undefined reference to `pthread_setspecific’
    复制代码

    Step6. 运行生成的test文件,可输出测试结果。


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-8 18:00 , Processed in 0.058957 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表