gtest

gtest参数化

我的梦境 提交于 2020-01-19 20:10:32
1、简介   在设计测试案例时,经常需要考虑给被测函数传入不同的值的情况。按照之前的通用方法,需要多次调用同一个函数,这种做法很不方便,效率也不好。 如: TEST(IsPrimeTest, HandleTrueReturn) {   EXPECT_TRUE(IsPrime(3));   EXPECT_TRUE(IsPrime(5));   EXPECT_TRUE(IsPrime(11));   EXPECT_TRUE(IsPrime(23));   EXPECT_TRUE(IsPrime(17));   ...... } 这种方法就是1个测试案例,有5个检查点。而且传入再多的值也无法保证函数正确。IsPrime函数在gtest的example1.cc中。因此Google使用参数化的方法解决这种问题。 2、参数化 2.1 告知gtest需要使用的参数类型   必须添加一个类,继承testing::TestWithParam<T>,其中T就是你需要参数化的参数类型。如:参数化int型的参数(放在头文件中) class myTest : public testing::TestWithParam<int> { }; 2.2 告知gtest拿到参数后执行的操作 当前的参数的具体值 如: TEST_P(myTest, test0) {   int num = GetParam();  

gtest断言

廉价感情. 提交于 2020-01-19 18:59:48
1、简介   gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。 区别: ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例) EXPECT_* 系列的断言,当检查点失败时,继续往下执行。会在结果中输出期望值和实际值,也可在XML文件中输出 2、自定义信息输出   对自动输出的出错信息不满意的话,你还可以通过操作符<<将一些自定义的信息输出。若不使用<<操作符自定义输出,在循环中查看不到当前的期望循环值,如:   EXPECT_EQ(x[i], y[i]); 结果为: Actual: 4 Expected: x[i] Which is: 3 使用<<操作符自定义输出,如: EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i; 结果为:Actual: 4 Expected: x[i] Which is: 3 Vectors x and y differ at index 2 3、布尔值   ASSERT_TRUE(condition); EXPECT_TRUE(condition); 条件是真   ASSERT_FALSE(condition); EXPECT_FALSE(condition); 条件是假 4、数值型数据检查  

gtest

拥有回忆 提交于 2019-12-25 14:11:23
gtest C++单元测试框架,由google公司发布。 断言 //bool值检查 //期待结果是true ASSERT_TRUE ( XX ) //期待结果是false ASSERT_FALSE ( XX ) //数值型数据检查 //期待结果X1=X2 ASSERT_EQ ( X1,X2 ) , //期待结果X1!=X2 ASSERT_NE ( X1,X2 ) //less than < ASSERT_LT ( X1,X2 ) //greater than > ASSERT_GT ( X1,X2 ) //less equal <= ASSERT_LE ( X1,X2 ) //greater equal >= ASSERT_GE ( X1,X2 ) //NULL指针和空字符串被认为是不同的 //期待字符串相等 ASSERT_STREQ ( str1 , str2 ) //忽略大小写 ASSERT_STRCASEEQ ( expected_str , actual_str ) ; //期待字符串不等 ASSERT_STRNE ( str1 , str2 ) //忽略大小写 ASSERT_STRCASENE ( str1 , str2 ) ; //异常抛出 ASSERT_ANY_THROW ( statement ) ; EXPECT_系列 //程序死了并且错误信息和X2匹配

玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

≯℡__Kan透↙ 提交于 2019-12-09 22:51:55
前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉原来的自己的测试框架,原因是: 1.不断完善我们的测试框架之后就会发觉相当于把gtest重新做了一遍,虽然轮子造的很爽,但是不是必要的。 2.使用gtest可以免去维护测试框架的麻烦,让我们有更多精力投入到案例设计上。 3.gtest提高了非常完善的功能,并且简单易用,极大的提高了编写测试案例的效率。 gtest的官方网站是: http://code.google.com/p/googletest/ 从官方的使用文档里,你几乎可以获得你想要的所有东西 http://code.google.com/p/googletest/wiki/GoogleTestPrimer http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide 如果还想对gtest内部探个究竟,就把它的代码下载下来研究吧,这就是开源的好处,哈! 官方已经有如此完备的文档了

C++单元测试框架:gtest

青春壹個敷衍的年華 提交于 2019-12-07 16:28:01
C++单元测试框架: gtest 1) 介绍 gtest 是Google的C++测试框架,可以帮助开发者更简单快捷得写好C++单元测试。并且无论你是工作在Linux,Windows还是Mac上。 如果你曾写过单元测试,无论用的什么语言,相信你很快就能上手。如果还不了解,那么就从这里开始吧。 如果你想更深入了解测试框架,可以看Kent Beck大神的 《测试驱动开发》 。 2) 准备 2.1) 目录树 gtest_start/ ├─build/ # 构建文件 ├─lib/ # 第三方库 ├─output/ # 输出目录(中间文件,执行文件) │ ├─gtest/ │ └─primer/ │ ├─Debug │ │ └─obj/ │ └─Release ├─src/ # 工程代码 │ └─primer/ ├─third_party/ # 第三方库代码 │ └─gtest/ └─tools/ # 工具脚本 这样清理方便些。 2.2) gtest # 准备目录 mkdir -p gtest_start/third_party/ cd gtest_start/third_party/ # 获取源码 svn co http://googletest.googlecode.com/svn/trunk/ gtest gtest本身提供了多平台的构建文件,如下: We provide build

CMake cannot find a required library

匿名 (未验证) 提交于 2019-12-03 08:36:05
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: This is my CMakeLists.txt: cmake_minimum_required(VERSION 2.6) # Locate GTest find_package(GTest REQUIRED) include_directories(/usr/include/gtest) # Link runTests with what we want to test and the GTest and pthread library add_executable(runTests gtest.cpp) target_link_libraries(runTests /usr/lib/gtest pthread) When running cmake I get the following error: michael@michaelFriko:~/workspace/gtest/src$ cmake CMakeLists.txt CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message): Could NOT find GTest (missing

CMake conflict with multiple gtest

匿名 (未验证) 提交于 2019-12-03 03:12:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: This is my first post on StackOverflow, so apologies if there's something wrong with my question. I'm new at CMake, and I'm running into a problem trying to import gtest (Google Test) in a C++ project with an existing gtest directory used within a library. My root CMakeLists.txt file is this (My changes are made between "Begin changes" and "End changes") : cmake_minimum_required(VERSION 2.6) project(nifi-minifi-cpp) set(PROJECT_NAME "nifi-minifi-cpp") set(PROJECT_VERSION_MAJOR 0) set(PROJECT_VERSION_MINOR 2) set(PROJECT_VERSION_PATCH 0) ####

gtest installed with conan: undefined reference to `testing::internal::GetBoolAssertionFailureMessage`

匿名 (未验证) 提交于 2019-12-03 02:29:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I use cmake to build my project and conan to install Google Test as dependency: conanfile.txt [requires] gtest/1.7.0@lasote/stable [generators] cmake [imports] bin, *.dll -> ./build/bin lib, *.dylib* -> ./build/bin CMakeLists.txt PROJECT(MyTestingExample) CMAKE_MINIMUM_REQUIRED(VERSION 2.8) INCLUDE(conanbuildinfo.cmake) CONAN_BASIC_SETUP() ADD_EXECUTABLE(my_test test/my_test.cpp) TARGET_LINK_LIBRARIES(my_test ${CONAN_LIBS}) test/my_test.cpp #include <gtest/gtest.h> #include <string> TEST(MyTest, foobar) { std::string foo("foobar"); std:

How to setup googleTest as a shared library on Linux

匿名 (未验证) 提交于 2019-12-03 02:24:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Debian does not provide any precompiled packages for gTest anymore. They suggest you to integrate the framework into your projects makefile. But I want to keep my make file clean. How do I setup gTest like the former versions ( 回答1: Before you start make sure your have read and understood this note from Google ! This tutorial makes using gtest easy, but may introduce nasty bugs . 1. Get the googletest framework wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz Or get it by hand . I won't maintain this little How-to, so

undefined reference to `pthread_key_create&#039; (linker error)

匿名 (未验证) 提交于 2019-12-03 02:11:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have downloaded gtest 1.7.0 sources from here: https://code.google.com/p/googletest/downloads/list and build the gtest .a files (lib files) on ubuntu 13.10: Linux ubuntu 3.11.0-15-generic #23-Ubuntu SMP Mon Dec 9 18:17:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux and the resulting lib is called: libgtest.a . In my main.cpp file Have: #include <iostream> #include "gtest/gtest.h" int main(){ std::cout << "Test \n"; int argc = 2; char* cp01; char* cp02; char* argv[] = {cp01, cp02}; testing::InitGoogleTest(&argc, argv); return 0; } From a