如何安装及使用gtest

去年三月份的时候,我又开了一个新的实现编程语言的坑,到现在为止还在断断续续地填坑中。最近心血来潮,利用晚上的业余时间,继续在为这个项目添砖加瓦。

遗憾的是,这个项目一直以来都没有单元测试的。每次开发了新的功能后,都需要手动地逐个执行example/目录下的代码文件,并一一确认它们都是可以正常运行的。为了更方便、更自动化地对编译器(以及虚拟机)做回归测试,便打算基于Google Test来编写测试代码。要使用一个框架,安装是必不可少的,本文正是对我自己手动安装Google Test的一个记录。

安装Google Test

Google Test(下称gtest)的项目主页在这里。点击【Clone or download】后再点击【Download ZIP】,可以下载到一个叫做googletest-master.zip的文件。下载后这个文件放在了我的系统的/tmp/目录下,使用下列命令实施解压缩

cd /tmp/
unzip googletest-master.zip

解压后得到了新的目录googletest,该目录下的README.md文件中有安装指南。我选择了基于cmake的安装方式,只需要创建一个目录并在其中正确地运行cmake,就可以得到真正构建时所需要的一系列文件了(如Makefile)。如果使用的是基于apt-get的Linux发行版,可以使用下面的命令安装cmake

sudo apt-get install cmake

有了cmake之后,运行下列的命令来生成构建gtest所需要的辅助文件

cd /tmp/googletest-master/
mkdir mybuild/
cd mybuild/
cmake ../googletest/

运行完毕后,在当前目录中将生成相应的Makefile文件,这时候可以构建Google Test了,命令如下

make
sudo make install

在我的系统上,sudo make install会把libgtest.a这个文件放置到/usr/local/lib/这个目录下。现在,可以使用gtest框架来编写测试代码了,一个很简单的例子如下

#include <gtest/gtest.h>

int foobar(void)
{
    return 1;
}

TEST(foobar, test)
{
    ASSERT_EQ(1, foobar());
}

int main(int argc, char *argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

将上面的代码保存在文件gtest.cpp中,使用下列命令即可编译并链接

g++ -c gtest.cpp
g++ gtest.o /usr/local/lib/libgtest.a -lpthread

这会在当前目录下生成一个名为a.out的文件,执行这个文件就可以看到Google Test的效果了,在我的系统上输出内容如下

[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from foobar
[ RUN      ] foobar.test
[       OK ] foobar.test (0 ms)
[----------] 1 test from foobar (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.

全文完

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,560评论 25 708
  • 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装 1.1BLOG文档结构图 ...
    小麦苗DB宝阅读 10,620评论 0 31
  • CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用。 本文目录如下: [1、CMake介绍] [...
    AlphaGL阅读 12,295评论 11 79
  • mfs分布式文件系统 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法...
    jony456123阅读 662评论 0 0