Windows下基于googletest源码创建测试用例

GTest 是基本 xUnit 架构开发用来进行 C++ 代码测试的框架;它可以跨平台实现自动化测试;

首先创建或选择一个需要测试的工程,这里我们举例创建一个名为CalcSample的工程,工程添加以下文件和内容:

// CalcSample.h
#include "stdafx.h"

double cubic(double d);
// CalcSample.cpp
#include "stdafx.h"
#include <cmath>
#include "CalcSample.h"

double cubic(double d)
{
	return pow(d, 3);
}
// main.cpp
#include "stdafx.h"
#include "CalcSample.h"

int _tmain(int argc, _TCHAR* argv[])
{
	cubic(10);

	return 0;
}

然后,从 gtest-1.7.0-rc1.zip 下载 gtest 的源码并解压到当前解决方案目录下:

在解决方案中添加一个 WIN32 工程,项目类型选择 StaticLibrary,名称为 GTestStaticLib,创建一个空白的项目,修改项目属性,将 gtest 的根目录和 include 的目录添加到包含文件夹中;

并将 src 文件夹下的 gtest_main.cc 和 gtest-all.cc 添加到项目中,运行编译:

如果是在 VS2012 中可能会提示:VC++ 2012 does not (and will never) support variadic templates; consequently, its standard library implementation attempts to fake them using preprocessor-generated overloads and specializations. The number of faux variadic template parameters defaults to 5 - the problem is that gtest is trying to instantiate std::tuple<> with as many as 10 template arguments.

原因是 gtest 中使用到模板类参数个数大于 5 的模板,要解决此问题需要给项目添加一个预编译宏 _VARIADIC_MAX=10 将上限修改为 10

编译成功,我们就得到了 gtest 的静态库文件了;

 

再添加一个 win console 工程,命名为 unittest_CalcSample 同样修改项目属性,将 gtest 的根目录和 include 的目录添加到包含文件夹中;将上面的两个工程引用进来:

在工程中添加 CalcSample.cpp ,并添加以下文件及内容:

// main.cpp
#include "stdafx.h"
#include "gtest/gtest.h"
#include "CalcSample.h"

TEST(testMath, myCubeTest)
{
	EXPECT_EQ(1000, cubic(10)); // 判断 cubic(10) 的返回值是否是 1000
}

int _tmain(int argc, _TCHAR* argv[])
{
	::testing::InitGoogleTest(&argc, argv);

	return RUN_ALL_TESTS();
}

运行程序,将得到以下输出:

Linux 下生成 gtest 静态库

安装 gtest 开发包:

sudo apt-get install libgtest-dev

以上操作将在本地 /user/src/ 下生成一个 gtest 文件夹:

完成以下操作:

cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make

如果就得到了 libgtest.a 和 libgtest_main.a 两个静态库文件;

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值