草庐IT

c++ - 使用 C++11 std::condition_variable 的 Gtest 意味着 valgrind 错误

如果我以这种方式使用google测试框架编写测试:TEST_F(TestFName,TestName){std::condition_variablecv;}它会生成一个valgrind错误。我使用--leak-check=full--track-origins=yes选项运行它。Conditionaljumpormovedependsonuninitialisedvalue(s)==17215==at0x4E3DA82:pthread_cond_destroy@@GLIBC_2.3.2(pthread_cond_destroy.c:35)...Uninitialisedvaluewa

主要gtest之前的c++段错误

我在main之前得到一个堆栈跟踪:#includeusingnamespacestd;intmain(intargc,char**argv){::testing::InitGoogleTest(&argc,argv);returnRUN_ALL_TESTS();}堆栈跟踪:程序收到信号SIGSEGV,段错误。0x0000000000000000在??()#00x0000000000000000in??()#10x00000000004e0b51instd::locale::_S_initialize()()#20x00000000004e0b93instd::locale::local

Qt代码单元测试以及报告生成

简介单元测试是所有测试中最底层的一类测试,是第一个环节,也是最重要的一个环节,是唯一一次有保证能够代码覆盖率达到100%的测试,是整个软件测试过程的基础和前提,单元测试防止了开发的后期因bug过多而失控,单元测试的性价比是最好的。覆盖率(codecoveragerate)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标。在代码逻辑比较复杂的情况下,测试工作往往只能覆盖到显而易见的逻辑分支,而更多的深层次的逻辑分支则不容易被测试人员发现。为了保证测试的覆盖率,有些开发人员会尝试协助测试人员写出所有的测试用例,这不仅会牺牲大量的宝贵的开发时间,同时也拥有一定的难度,最

c++ - 构造函数采用参数时的GTest夹具?

我有一个简单的示例类。它有一个数据成员,它是一个指向Armadillo矩阵的指针的std::vector。构造函数将这样一个vector作为唯一的参数。这是文件TClass.cpp:#include#includeclassTClass{private:std::vectormats;public:TClass(std::vectorm_);arma::mat*GetM(intwhich){return(mats.at(which));};};TClass::TClass(std::vectorm_){mats=m_;}我想构造一个GTestfixture来测试成员函数GetM。这是我

c++ - 谷歌测试 Gtest.cc :812: error: 'gettimeofday' was not declared in this scope

我正在尝试通过命令行通过MinGW编译Google测试,但是当我尝试使用命令进行编译时gcc-ID:\gtest-ID:\gtest\include-ID:\gtest\include\gtestsrc\gtest_main.ccsrc\gtest-all.cc它抛出错误Gtest.cc:812:错误:'gettimeofday'未在此范围内声明我通过VisualStudio成功编译,所以我猜这不是代码的错误。还有其他人遇到过这个问题并且知道解决方案吗? 最佳答案 and是两个不同的包含

c++ - 将测试从 GoogleTest 升级到 GoogleMock (Ubuntu 14) 时出现与 pthread 相关的错误

尝试添加gmock时到已经在使用gtest的现有项目,我发现了一系列与pthread有关的低级错误.我的猜测是这与GoogleMock和GoogleTest的构建方式有关(请参阅下面的详细信息),但不幸的是,关于在Ubuntu14中使用这些库的最佳方式的信息不多。将代码缩减为最小的代表性示例后,会发生什么:我将GoogleTestheader替换为GoogleMockheader以及“主要”函数://Declarationsatfoo.hclassFoo{public:intsum(inta,intb);//itreturnsa+b(definedinfoo.cpp)};//Testc

c# - gtest (C++) 和 nunit (C#) 中双重比较的区别

我已经将带有gtest测试的c++项目移植到带有nunit测试的c#项目。现在我遇到了浮点精度的问题。在nunit测试中我有问题(红色)Assert.AreEqual(0.7,7*0.1);在gtest测试中我有:ASSERT_DOUBLE_EQ(0.7,7*0.1);没问题(绿色)现在的问题是为什么??? 最佳答案 GoogleTest的ASSERT_DOUBLE_EQ()验证实际值是否在预期值的4个ULP之内(更多信息请参见https://github.com/google/googletest/blob/main/docs/a

c++ - Gtest : Expected Class-Name Before '{'

我正在尝试将Gtest下的测试用例转换为使用测试夹具,以便在添加更多测试时可以使用通用设置。但是,这会导致错误:test_integrate.cc:4:47:error:expectedclass-namebefore'{'tokenclassIntegratorTest:public::testing::test{这种失败是我无法理解的,因为根据我的经验,它通常是由循环导入引起的,并且导入与工作代码相比没有变化。完整代码如下:#include"gtest/gtest.h"#include"utils/integrate.hpp"classIntegratorTest:public::

c++ - vcpkg 不适用于谷歌测试

我安装并集成了最新版本的vcpkg:e:\work\vcpkg>vcpkgversionVcpkgpackagemanagementprogramversion0.0.65-692a363701156f1bc319306fbde93fb6748325f6SeeLICENSE.txtforlicenseinformation.e:\work\vcpkg>vcpkgintegrateinstallApplieduser-wideintegrationforthisvcpkgroot.AllC++projectscannow#includeanyinstalledlibraries.Link

c++ - 与柯南一起安装的 GTest : undefined reference

我尝试使用通过柯南安装的gtest,但最终出现undefinedreference链接器错误。这个问题或多或少是对thisstackoverflowquestion的跟进。.但我认为提供的例子太简单了。我使用gcc6.3在最新的archlinuxx64下编译。C++版本会不会有些不匹配?或者您对如何解决问题有任何其他想法吗?我将在下面提供我的源代码:目录树:tree.├──CMakeLists.txt├──conanfile.txt└──main.cpp主要.cpp:#include#includeclassTestFixture:public::testing::Test{prote