草庐IT

Googletest

全部标签

c++ - 如何在 C++ 中忽略动态链接库中的 main 方法

在我们的应用程序中,我们使用了几个动态链接库。我们最近更新了其中一个库的版本。自这个新版本以来,该库的开发人员提供了一个主要方法(除了打印HelloWorld之外什么都不做)。问题是我们使用的是GTest和GMock,它们生成自己的main方法。当我们现在运行我们的测试二进制文件时,我们只得到“HelloWorld”,所以采用了错误的main方法。我们如何强制使用测试的主要方法?更新:这似乎是一个GMock/GTest问题。main方法正常生成,但不是这样,因为它现在找到了一个已经存在的main方法。 最佳答案 您的情况没有解决办法

c++ - 我怎样才能告诉 GoogleMock 在测试完成后停止检查期望值?

我有两个共享某些状态的单元测试(不幸的是我无法更改它,因为重点是测试这个状态的处理)。TEST(MySuite,test1){shared_ptrfirst(make_shared());SubscribeToFooCallsGlobal(first);EXPECT_CALL(*first,Foo(_));//.RetiresOnSaturation();TriggerFooCalls();//willcallFooinallsubscribed}TEST(MySuite,test2){shared_ptrsecond(make_shared());SubscribeToFooCall

c++ - gmock TypedEq 相同的字符串不同的地址

我正在尝试对gmock对象设置期望值。只要将“avout”作为参数传递给我的方法,就应该应用期望。我这样设置期望:EXPECT_CALL(actx_mock,getDeviceClientService(TypedEq("avout"),_,_)).WillOnce(DoAll(SetArgPointee(&mockAVOut),Return(0)));需要TypedEq,因为该方法已重载,接受字符串或constchar*。当我运行测试时,出现以下错误:CAniSpiceServices_test.cpp:1357:EXPECT_CALL(actx_mock,getDeviceClie

c++ - 使用 Visual Studio 2010 : LNK4098 and LNK2005 运行 gtest

我已经按照描述安装了googletesthere.但是当我尝试对我当前的项目使用测试时,我收到2个LNK4098警告:defaultlib'MSVCRTD'与其他库的使用冲突;使用/NODEFAULTLIB:库“LIBCMTD”也是如此,还有一堆LNK2005错误。但是当我实际上忽略这两个默认库时,它并没有帮助:我得到了更多的错误。有什么问题? 最佳答案 您必须确保googletest和您的项目是使用相同版本的C运行时库(CRT)构建的。谷歌测试(目前v1.6.0)提供2个VisualStudio解决方案文件;gtest-1.6.0

c++ - 我如何反复期待一系列调用?

我正在编写一个测试来验证图像处理线程上的调用顺序。相关的测试代码如下所示:Sequences1,s2;...EXPECT_CALL(*mMockVideoSource,getFrame()).InSequence(s2).WillRepeatedly(Return(mFakeBuffer));EXPECT_CALL(*mMockProcessor,processFrame(_,_)).InSequence(s2).WillRepeatedly(Return(0));EXPECT_CALL(*mMockVideoSource,releaseFrame(_)).Times(AnyNumbe

c++ - gtest 意外转换

我正在测试我的功能是否正确运行boolCore::IsMeta(void){returnmProc->GetCode(mPC)->Meta;}使用说明EXPECT_EQ(true,CC->IsMeta());//TheinstructionpointedtoismetaEXPECT_EQ(false,CC1->IsMeta());//TheinstructionpointedtoisNOTmeta测试运行正常,但两个测试的行为不同:“true”情况下编译正常,“false”情况下出现警告Infileincludedfrom/..../build/gtest/src/gtest/incl

c++ - 使用谷歌测试将类型名和字符串传递给参数化测试

有没有一种方法可以使用google的测试将类型和字符串都传递给参数化测试。我想做的事:templateclassRawTypesTest:public::testing::TestWithParam{protected:virtualvoidSetUp(){message=type;}};TEST_P(RawTypesTest,Foo){ASSERT_STREQ(message,type);ParamType*data=..;...}提前致谢 最佳答案 值参数化测试不适用于传递类型信息;您只能使用类型化或类型参数化测试来做到这一点。

c++ - 使用 Google Test 调试 C++ 项目时禁用异常处理

我有我的(nativeC++)DLL项目和基于GoogleTest的相应测试EXE项目。通过此EXE调试我的DLL时,GoogleTest会自动处理异常。因此,如果我的DLL在调试期间抛出未处理的异常,我希望看到来自VisualStudio的错误消息,其中调试session在代码导致异常后暂停。相反,我在gtest.cc中触发了断点。如果我禁用--gtest_break_on_failure标志,我将不会收到任何中断。我在Google测试文档中找不到这样的选项。我错过了吗?我不想在调试设置中检查不同异常的“抛出时中断”标志,因为我只对未处理的异常感兴趣。 最

零附近的 C++ 浮点比较与 Gtest 失败

我们为我的一个单元测试苦苦挣扎了很长一段时间。在调查过程中,我们找到了根本原因,这似乎是float的比较(参见以下代码片段,我简化了计算但仍然失败)。TEST_F(MyFloatTest,thisOneDoesFail){constfloattoCompare=0.2f-1.0f+0.9f;EXPECT_FLOAT_EQ(toCompare,0.1f);}结果是:Actual:0.1Expected:toCompareWhichis:0.099999964虽然有一些数值数学背景,但我们仍然无法弄清楚为什么这个测试失败了,而使用std::numerical_limits::epsilon

c++ - 如何断言谷歌测试中的执行时间?

我正在使用Google的C++测试框架Gtest。我想针对它测试一个函数执行时间,例如如果执行时间超过3毫秒,函数foo()将失败。我找不到实现此目的的ASSERT语句。gtest不包括这样的功能吗? 最佳答案 为什么不使用这么简单的解决方案呢?//pseudocodeclock_tt=clock();foo();constdoublework_time=(clock()-t)/double(CLOCKS_PER_SEC);ASSERT_TRUE(work_time 关于c++-如何断言