单元测试项目管理和技术管理中做单元测试,衡量一个软件是否正常的标准,良好的单元测试以及足够多的覆盖率,至少保证关键功能,关键业务的覆盖率接近100%。gtest是谷歌公司发布的一个跨平台(Linux、MacOS、Windows等)的C++单元测试框架,它提供了丰富的断言、致命和非致命判断、参数化、死亡测试等等。两种断言:ASSERT_*:当断言失败时,产生致命错误、并终止当前函数。EXPECT_*:当断言失败时,产生非致命错误,并且不会终止当前函数。通常都会用EXPECT_*,因为能在一次测试中测试出更多的失败情况。如果要在出现失败测试时立即终止程序,则要选择ASSERT_*==注意:==因为
一.环境配置googletest地址:https://github.com/google/googletest我下载的是1.12.1,这是最后一个支持C++11的版本。首先编译gtest,在windows上的编译方式和编译gRPC一模一样,详见Qt中调用gRPC,编译完了会生成几个静态库,如下图所示本文主要用到了libgtest.a下载msys2,默认安装到C:\msys64,安装后修改安装目录下的etc/profile文件,在最后一行添加Qt所用的mingw版本,如下图所示否则在生成覆盖率报告的时候会出现如下提示信息,导致生成失败gtest_main.gcno:version'A73*',p
目录1.Gtest介绍2.Gtest安装3.Gtest编译3.1普通编译3.2交叉编译3.3example编译4.使用测试4.1测试程序解读4.2测试程序编译5.测试实例5.1基本测试5.2测试固件5.3异常测试5.4值参数化测试1.Gtest介绍 gtest是一个跨平台的(Liunx、MacOSX、Windows、Cygwin、WindowsCEandSymbian)C++单元测试框架,由google公司发布。gtest是为在不同平台上为编写C++测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。2.Gtest安装 通过github下载
我开始使用gtest实现一些测试。我有一些方法,从外部请求数据,这需要一些时间。所以我想使用线程并行进行。为了测试,我做了一些简单的例子:voidTestThread(void){ASSERT_EQ(1,2);boost::this_thread::sleep_for(boost::chrono::seconds(5));ASSERT_EQ(2,3);}TEST(MySuite,MyTest){boost::threadmyThread(TestThread);ASSERT_EQ(0,0);myThread.join();}intmain(intargc,char**argv){tes
这是我在StackOverflow上的第一篇文章,如果我的问题有问题,请深表歉意。我是CMake的新手,我在尝试将gtest(GoogleTest)导入C++项目时遇到了问题,该项目在库中使用了现有的gtest目录。我的根CMakeLists.txt文件是这样的(我的更改是在“开始更改”和“结束更改”之间进行的):cmake_minimum_required(VERSION2.6)project(nifi-minifi-cpp)set(PROJECT_NAME"nifi-minifi-cpp")set(PROJECT_VERSION_MAJOR0)set(PROJECT_VERSION
@Gtest生成静态库可执行文件通过Gtest产生静态库文件.a及可执行文件app,实现Gtest测试框架。一、静态库文件.a生成可执行文件需要gtest下的静态库文件.a,以及自身所在项目的程序生成的静态库文件.a,本案例中以生成自项目程序的静态库文件为例,如图所示是本文中所需的.c文件及.h文件以及产生静态库文件的Makefile。1.静态库文件命令:gcc-c-g-Wall-pthread-I./include----生成.o文件ar-rcxxx.a a.ob.oc.oxx.o----生成静态库文件xxx.a2.MakefileCC:=gcc#设置当前目录CUR_PATH:=$(shel
我正在尝试使用GoogleTest对函数进行测试,现在它不再找到EqFailurething:/usr/include/gtest/gtest.h:1337:undefinedreferenceto`testing::internal::EqFailure(charconst*,charconst*,testing::internal::Stringconst&,testing::internal::Stringconst&,bool)'我正在这样写测试:test_file.cpp:#include#include"tools/CMorphology.hpp"TEST(erode_Mo
我想用gtest测试一个模板类。我在GoogleTestmanual中阅读了有关TYPED_TEST的信息并查看了officialexample他们引用了,但我仍然无法全神贯注地获取在我的测试中实例化的模板类对象。假设有以下简单的模板类:templateclassFoo{public:Tdata;};在测试类中我们声明typedef::testing::TypesMyTypes;现在如何在测试中为MyTypes中列出的Ts实例化类Foo的对象?例如TYPED_TEST(TestFoo,test1){Fooobject;object.data=1.0;ASSERT_FLOAT_EQ(ob
我正在并行化一个已存在的应用程序,该应用程序将gTest与MPI结合使用。在MPI程序中,首先要做的是通过调用来初始化环境MPI_Init(int*argc,char***argv)在MPI程序结束时,根进程也应该调用MPI_Finalize。我如何使用GoogleTest为此类应用程序编写单元测试?特别是,在gTest修改它们之前,我如何从测试中访问argc和argv。现在我在做:intargc=0;char**argv=NULL;boost::mpi::environmentenv(argc,argv);TEST(component_test,test_name){//stuffu
我想用gtest测试一个模板类。我读到了TYPED_TEST在gtest手册中查看他们引用的官方示例(samples\sample6_unittest.cc)。示例中的这个模板只有一个模板参数。但是,我的代码有两个模板参数,我该如何测试呢?我有以下代码://twoelementtypetemplateclassQueueNew{public:QueueNew(){}voidEnqueue(constE&element){}E*Dequeue(){}Fsize()const{return(F)123;}};我为此编写了以下测试代码:templateQueueNew*CreateQueue