您的位置:首页 > 编程语言 > C语言/C++

Google C++ Testing Framework之初识

2010-10-18 19:38 513 查看
开始尝试使用Google C++ Testing Framework,即 googletest。

本项目主页:http://code.google.com/p/googletest/

简介:Google's framework for writing C++ tests on a variety of platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and Symbian). Based on the xUnit architecture. Supports automatic test discovery, a rich set of assertions, user-defined assertions, death tests, fatal and non-fatal failures, value- and type-parameterized tests, various options for running the tests, and XML test report generation.

本文主要介绍一些入门级别的使用方法,主要包含编译器的配置,与源代码的编译,在最后我们使用googletest来测试一个简单的例子。

开始。

操作系统:WindowsXP 编译器:MS Visual Studio 2008

1. 下载并解压源码包,可看到如下树状结束的代码层,找到 msvc 目录,如下图所示:



2. 打开 VS2008 ,直接打开 msvc 里面的工程文件,即 msvc\gtest.sln 。直接编译即可。

完成以上步骤后,可在 msvc 里生成目录 Debug ,可找到文件 gtestd.lib 。

3. 在VS里面,新建一个项目 —— C++ Win32控制台程序 。编写一个被测程序。

我们使用googletest提供的一个例子来作为测试的目标程序吧。

// Returns true iff n is a prime number.
bool IsPrime(int n)
{
// Trivial case 1: small numbers
if (n <= 1) return false;

// Trivial case 2: even numbers
if (n % 2 == 0) return n == 2;

// Now, we have that n is odd and n >= 3.

// Try to divide n by every odd number i, starting from 3
for (int i = 3; ; i += 2) {
// We only have to try i up to the squre root of n
if (i > n/i) break;

// Now, we have i <= n/i < n.
// If n is divisible by i, n is not prime.
if (n % i == 0) return false;
}
// n has no integer factor in the range (1, n), and thus is prime.
return true;
}


4. 接着设置项目属性(项目—属性)。需要设置的有 gtest头文件的路径、运行时库 与 gtestd.lib 的路径。

gtest头文件路径:



运行时库:



gtestd.lib 的路径:



至此,运行时所需环境均已配置完毕。继续回到代码。

5. 编写自动化测试代码。

//头文件路径已设置完毕,习惯放至代码最前面:
#include <gtest/gtest.h>

TEST(IsPrimeTest, TrueCondition)
{
EXPECT_TRUE(IsPrime(2));
EXPECT_TRUE(IsPrime(3));
EXPECT_TRUE(IsPrime(5));
EXPECT_TRUE(IsPrime(7));
EXPECT_TRUE(IsPrime(11));
EXPECT_TRUE(IsPrime(19));
}


6. 编写主函数。

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


运行通过,执行结果:



以上就是简单的测试执行过程。

总结。

在这里我们看到,googletest进行C++单元测试入门非常简单。

在下一节,我们将会了解到以上案例的编写及执行,还有EXPECT_TRUE的详细解答。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: