Google Test

 

1. https://github.com/google/googletest/releases

2. 配置Google Test项目

  1)【解决方案】下右键,新建【GoogleTest项目】(Win32 Project)

  2)  解压gtest-1.7.0后,复制文件夹到【GoogleTest项目】

  3)  导入gtest头文件

    

  4) 右键【GoogleTest项目】 --> Add --> 现有项(gtest/src/gtest_main.cc、gtest-all.cc)

  5) 右键【GoogleTest项目】--> Build 

 

3. 创建单元测试项目

  1)【解决方案】下右键,新建【UnitTest项目】(Win32 Console Application)

  2) 导入头文件

    

  3) 为UnitTest项目添加引用

    

 


类源码

func.cpp

 1 #include "func.h"
 2 
 3 int fac(int nInput)
 4 {
 5     if (nInput < 0) {
 6         return -1;
 7     }
 8 
 9     int nRev = 1;
10     for (int i = 1; i <= nInput; ++i) {
11         nRev *= i;
12     }
13     return nRev;
14 }
15 
16 bool IsPrime(int n)
17 {
18     // Trivial case 1: small numbers
19     if (n <= 1) return false;
20 
21     // Trivial case 2: even numbers
22     if (n % 2 == 0) return n == 2;
23 
24     // Now, we have that n is odd and n >= 3.
25 
26     // Try to divide n by every odd number i, starting from 3
27     for (int i = 3; ; i += 2) {
28         // We only have to try i up to the squre root of n
29         if (i > n / i) break;
30 
31         // Now, we have i <= n/i < n.
32         // If n is divisible by i, n is not prime.
33         if (n % i == 0) return false;
34     }
35     // n has no integer factor in the range (1, n), and thus is prime.
36     return true;
37 }


func.h

 1 #pragma once
 2 #ifndef FUNC_C
 3 #define FUNC_C
 4 
 5 #ifdef __cplusplus
 6 extern "C"
 7 {
 8 #endif
 9     int fac(int nInput);
10     bool IsPrime(int n);
11 #ifdef __cplusplus
12 }
13 
14 #endif
15 
16 #endif //FUNC_C

Unit_test

unit_func.cpp

 1 // UnitTest01.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <limits>
 6 #include "func.h"
 7 #include "gtest/gtest.h"
 8 
 9 
10 TEST(test_func, fac_001)
11 {
12     EXPECT_EQ(-1, fac(-1));
13 }
14 
15 TEST(IsPrimeTest, HandleTrueReturn)
16 {
17     EXPECT_TRUE(IsPrime(3));
18     EXPECT_TRUE(IsPrime(5));
19     EXPECT_TRUE(IsPrime(11));
20     EXPECT_TRUE(IsPrime(23));
21     EXPECT_TRUE(IsPrime(17));
22 }
23 
24 
25 class IsPrimeParamTest : public::testing::TestWithParam<int>
26 {
27 
28 };
29 
30 INSTANTIATE_TEST_CASE_P(TrueReturn, IsPrimeParamTest, testing::Values(3, 5, 11, 23, 17, 11));
31 
32 TEST_P(IsPrimeParamTest, HandleTrueReturn)
33 {
34     int n = GetParam();
35     EXPECT_TRUE(IsPrime(n));
36 }


unit_func.h

 1 #pragma once
 2 #ifndef FUNC_C
 3 #define FUNC_C
 4 
 5 #ifdef __cplusplus
 6 extern "C"
 7 {
 8 #endif
 9     int fac(int nInput);
10 
11     #idef __cplusplus
12 }
13 
14 #endif
15 
16 #endif //FUNC_C

 

posted @ 2017-07-23 17:33  辛梓  阅读(336)  评论(0编辑  收藏  举报