1 环境搭建

  • git clone https://github.com/google/googletest.git
  • cd googletest
  • mkdir build (创建build目录)
  • cd build (进入build目录)
  • cmake .. -A Win32 (编译32位 -Win32,编译64位 -Win64)
  • 打开googletest-distribution.sln,编译,在build/lib目录下生成gmock.lib, gmock_main.lib, gtest.lib, gtest_main.lib(debug版本后带d)
  • gtest.lib和gtest_main.lib区别是 gtest_main.lib中已经包含了main函数,【int main(int argc, char ** argv)】,而如果仅仅包含gtest.lib则需要自己写main函数
int main(int argc, char **argv)
{
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}
  • 如果遇到编译错误如gtestd.lib(gtest-all.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(main.obj 中),解决方法是 右键属性-c/c++-代码生成,运行库多线程调试 DLL (/MDd)改为多线程调试 (/MTd)

2 编写测试项目

  • 新建test_gtest目录
  • 编写CMakeLists.txt文件
cmake_minimum_required(VERSION 3.0.0)
project(test_gtest VERSION 0.1.0)

include_directories(XXXXXXXXXX\\caetest\\googletest\\googletest\\include)
link_directories(XXXXXXXX\\googletest\\build\\lib\\Debug)
link_libraries(gtestd gtest_maind)

add_executable(test_gtest 
    mytest.cpp
)

 

  • 编写mytest.cpp
#include <gtest/gtest.h>

int add(int n, int m) 
{
    return n + m;
}

bool true_or_false(bool flag) 
{
    return flag;
}

TEST(testcase, test_add) 
{
    EXPECT_EQ(add(5, 6), 10);
    ASSERT_EQ(add(2, 3), 5);
}

GTEST_TEST(gzhsuite, test_flag) 
{
    EXPECT_EQ(true_or_false(false), true);
    ASSERT_EQ(true_or_false(true), true);
}

// 如果未引用gtest_maind,则需要放开下面的main函数
/*int main(int argc, char **argv)
{
    printf("Running main() from %s\n", __FILE__);
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
    return 0;
}*/

 

0

Publication author

offline 2年

lengyuewuxin

0
Comments: 0Publics: 25Registration: 15-07-2018
Authorization
*
*
Registration
*
*
*
Password generation