gtest下载链接:Google-gtest
- 切换权限至root
- 执行命令下载gtest:git clone https://github.com/google/googletest.git
- 下载成功后切换至googletest目录
- 执行命令:cmake .
- make
如果此过程报错,可在CMakeLists.txt中添加如下语句再从第3步开始执行:SET(CMAKE_CXX_FLAGS “-std=c++11”)- 在lib目录下会生成如下文件:libgmock.a libgmock_main.a libgtest.a libgtest_main.a
- 执行以下命令,完成安装:make install
需要对如下程序进行gtest测试:
#ifndef _HEADER_H_ #define _HEADER_H_ // 计算阶乘 // 返回值: // n < 0: 返回-1 // n == 0 || n == 1: 返回1 // n > 1: 返回阶乘结果 int factorial(int n); // 判断 n 是否是素数 // 返回值: // 是素数:true // 不是素数:false bool isPrime(int n); #endif // !_HEADER_H_
#include "header.h" int factorial(int n) { if(n < 0) { return -1; } if(n == 1) { return 1; } int result = 1; for(int i = 1; i <= n; ++i) { result *= i; } return result; } bool isPrime(int n) { if(n < 2) { return false; } if(n == 2) { return true; } for(int i = 2; i < n / 2; ++i) { if(n % 2 == 0) { return false; } } return true; }
#include <limits.h> #include "header.h" #include <gtest/gtest.h> namespace { // header.h factorial 阶乘函数测试 /****************************************************************** * 说明: * 1. TEST() - gtest的测试宏 * 2. FactorialTest - 测试套的名字 * 3. Negative - 测试用例名称 * 4. EXPECT_EQ、EXPECT_FALSE等是gtest提供的测试断言;例如:EXPECT_EQ(-1,factorial(-1))表示-1和factorial(-1)的值是相等的,如果最后的结果的确相等则成功,否则失败。 *******************************************************************/ TEST(FactorialTest, Negative) { EXPECT_EQ(-1, factorial(-1)); // factorial EXPECT_EQ(-1, factorial(-2)); EXPECT_EQ(-1, factorial(-3)); EXPECT_EQ(-1, factorial(-10)); EXPECT_EQ(-1, factorial(-2147483648)); } TEST(FactorialTest, Zero) { EXPECT_EQ(1, factorial(0)); } TEST(FactorialTest, Positive) { EXPECT_EQ(1, factorial(1)); EXPECT_EQ(2, factorial(2)); EXPECT_EQ(120, factorial(5)); EXPECT_EQ(3628800, factorial(10)); } // header.h isPrime 判断是否是素数 TEST(PrimeTest, Negative) { EXPECT_FALSE(isPrime(-1)); EXPECT_FALSE(isPrime(-100)); } TEST(PrimeTest, ZERO) { EXPECT_FALSE(isPrime(0)); } TEST(PrimeTest, Positive) { EXPECT_FALSE(isPrime(1)); EXPECT_TRUE(isPrime(2)); EXPECT_TRUE(isPrime(3)); EXPECT_FALSE(isPrime(100)); } } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
编译命令如下:g++ header_unittest.cc header.cc -lgtest -std=c++11 -lpthread -o unittest
#include <limits.h> #include "header.h" #include <gtest/gtest.h> namespace { // header.h factorial 阶乘函数测试 /****************************************************************** * 说明: * 1. TEST() - gtest的测试宏 * 2. FactorialTest - 测试套的名字 * 3. Negative - 测试用例名称 * 4. EXPECT_EQ、EXPECT_FALSE等是gtest提供的测试断言;例如:EXPECT_EQ(-1,factorial(-1))表示-1和factorial(-1)的值是相等的,如果最后的结果的确相等则成功,否则失败。 *******************************************************************/ TEST(FactorialTest, Negative) { EXPECT_EQ(-1, factorial(-1)); // factorial EXPECT_EQ(-1, factorial(-2)); EXPECT_EQ(-1, factorial(-3)); EXPECT_EQ(-1, factorial(-10)); EXPECT_EQ(-1, factorial(-2147483648)); } TEST(FactorialTest, Zero) { EXPECT_EQ(1, factorial(0)); } TEST(FactorialTest, Positive) { EXPECT_EQ(1, factorial(1)); EXPECT_EQ(2, factorial(2)); EXPECT_EQ(120, factorial(5)); EXPECT_EQ(3628800, factorial(10)); } // header.h isPrime 判断是否是素数 TEST(PrimeTest, Negative) { EXPECT_FALSE(isPrime(-1)); EXPECT_FALSE(isPrime(-100)); } TEST(PrimeTest, ZERO) { EXPECT_FALSE(isPrime(0)); } TEST(PrimeTest, Positive) { EXPECT_FALSE(isPrime(1)); EXPECT_TRUE(isPrime(2)); EXPECT_TRUE(isPrime(3)); EXPECT_FALSE(isPrime(100)); } }
编译命令如下:g++ header_unittest_1.cc header.cc -lgtest -std=c++11 -lgtest_main -lpthread -o unittest