开始尝试使用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提供的一个例子来作为测试的目标程序吧。

1 // Returns true iff n is a prime number.
2  bool IsPrime(int n)
3 {
4 // Trivial case 1: small numbers
5   if (n <= 1) return false;
6
7 // Trivial case 2: even numbers
8   if (n % 2 == 0) return n == 2;
9
10 // Now, we have that n is odd and n >= 3.
11
12 // Try to divide n by every odd number i, starting from 3
13   for (int i = 3; ; i += 2) {
14 // We only have to try i up to the squre root of n
15 if (i > n/i) break;
16
17 // Now, we have i <= n/i < n.
18 // If n is divisible by i, n is not prime.
19 if (n % i == 0) return false;
20 }
21 // n has no integer factor in the range (1, n), and thus is prime.
22 return true;
23 }

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

    gtest头文件路径:

    运行时库:

    gtestd.lib 的路径:

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

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

1 //头文件路径已设置完毕,习惯放至代码最前面:
2 #include <gtest/gtest.h>
3
4 TEST(IsPrimeTest, TrueCondition)
5 {
6 EXPECT_TRUE(IsPrime(2));
7 EXPECT_TRUE(IsPrime(3));
8 EXPECT_TRUE(IsPrime(5));
9 EXPECT_TRUE(IsPrime(7));
10 EXPECT_TRUE(IsPrime(11));
11 EXPECT_TRUE(IsPrime(19));
12 }

6. 编写主函数。

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

运行通过,执行结果:

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

总结。

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

在下一节,我们将会了解到以上案例的编写及执行,还有EXPECT_TRUE的详细解答。

posted on 2010-10-18 19:38  oyzway  阅读(1722)  评论(0编辑  收藏  举报