googletest相关内容

从工厂模拟返回多个UNIQUE_PTR

当无法通过被调用函数的不同输入参数识别调用时,我如何从模拟工厂返回多个对象?unique_ptr 我正在做此操作: EXPECT_CALL(MyFactoryMock, create()) .WillRepeatedly(Return(ByMove(std::make_unique()))); 运行时错误为: [致命] /.../tools ..
发布时间:2022-08-26 23:34:12 C/C++开发

对于单元测试,有没有一种更改const变量的值的黑客方法?

我有一个C++11头文件,它有一个声明为my_const_value的常量值。以及一个名为GetValue的函数,该函数使用const值运行复杂逻辑并返回期望值。 我想用my_const_value的不同值对GetValue进行单元测试。 我知道这不可取,但为了编写GetValue的单元测试,我希望使用不同的my_const_value值来测试GetValue。在C++中是否有一些类似 ..
发布时间:2022-08-26 23:14:43 C/C++开发

在Visual Studio生成后事件中使用lnk.exe从.lib文件中删除特定对象

我有一个C++项目,其中我使用Google测试来编写单元测试。这个项目已经存在了一段时间,而且相当混乱,所以我只是在主函数的开头添加了一行代码,用于启动单元测试,然后退出程序。然后,我会注释和取消注释此行,以便在单元测试和实际应用程序之间进行切换。 仅当我使用我的代码时,这工作得很好,但现在我正试图用两个项目和.exe文件来解决这个问题,一个用于实际应用程序,一个用于测试,就像Toussa的答案 ..
发布时间:2022-08-26 22:31:17 C/C++开发

包括CMake项目依赖项包括带有-issystem的目录

我正在处理的一个项目链接到Google测试(Gtest)作为依赖项。使用Google测试项目中包含的CMakeList,通过CMake的接口依赖项将Google测试头包含在项目中。 target_link_libraries (our_project gtest gmock) 我们在项目中使用的一些警告标志是在Google测试中打印大量警告--例如,GCC的-Wsuggest-over ..
发布时间:2022-08-26 22:26:09 其他开发

使用Google测试框架(非Windows)检测内存泄漏的标准做法是什么

我有一公吨的使用Google测试的单元测试。 目前正在使用XCode,我注意到其他一些测试框架会在每个单元测试的末尾检测内存泄漏,我假设有一种规定的方法可以用Google测试来做同样的事情。我希望这不是Boost测试的一个功能,也不是仅有的几个其他功能。 如果有人能给我指路,我将不胜感激。而是避免切换测试框架。 现在,我认为valgrind可能值得研究一下,我只是不确定如何连接到 ..
发布时间:2022-08-26 22:17:32 C/C++开发

在GoogleTest中使用Assert和Expect

当断言_*宏会导致测试用例终止时,Expect_*宏会继续求值。 我想知道决定使用其中一个的标准是什么。 推荐答案 当必须满足条件时,使用ASSERT-如果不满足,则测试立即停止。如果没有此条件,则在测试的其余部分不具有语义意义时使用此选项。 当条件应该成立时使用EXPECT,但在条件不成立的情况下,我们仍然可以从继续测试中获得价值。(不过,测试最终仍将失败。) 经验法则是 ..
发布时间:2022-08-26 22:06:28 C/C++开发

CMake:无法与GMock链接

我正尝试在单元测试中使用GMock。但链接失败,并出现下一个错误: In function `testing::internal::linked_ptr_internal::depart()': /home/user/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:127: undefined reference ..
发布时间:2022-08-26 21:57:49 C/C++开发

如何模拟Google测试中公共方法正在使用的类中的私有方法?

我有一个类,比如说ClassA,它既有一些公共函数也有一些私有函数。 公共函数轮流类私有函数。 现在我在这里的目的是通过公共函数测试私有函数。 对于公共函数,我尝试调用原始实现,而对于私有方法,我尝试创建一个Mock函数。 我的A班是这样的 class ClassA { public: string getName(string key) { int value ..
发布时间:2022-08-26 21:46:49 C/C++开发

Boost 测试与谷歌测试框架

我是单元测试领域的新手,基本上我是 C++ 开发人员,在大型产品上工作了将近 3 年,现在我决定对我的代码执行自动化单元测试.为此,我在互联网上做了很多研究,遇到了很多工具和框架,最后选择了以下两个:1) Boost 测试库2) C++ 谷歌测试框架 现在我很困惑从这些中选择哪个.如果有人使用上述任何一种,请分享您的经验. 解决方案 下面的 SO 帖子几乎可以回答你的问题 c+ ..
发布时间:2022-01-14 17:45:18 其他开发

如何在通过自动工具构建的项目中使用 Google Test?

似乎有一些答案有点,有点道理,但我不知道如何执行.而且我还没有找到一个全面的答案. 第一个问题 Google Test 不应是已安装的库,而应与项目一起构建.(请参阅 常见问题解答.)可以看出,这意味着 Google 测试库是我的单元测试的依赖项,应该在我第一次在我的项目中运行“make check"时构建.这应该在某个目录中构建 Google 测试库.我不知道该怎么做.它提到了一些已 ..
发布时间:2022-01-14 17:24:56 C/C++开发

已安装 GoogleTest 后如何在 Visual Studio 2017 中配置 GoogleMock?

我将 Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn 包安装到我的 VS 2017 应用程序解决方案中.这是通过“添加新项目/其他语言/C++/Test/Google 测试"向我的解决方案添加一个新的 GoogleTest 项目来实现的. 测试运行良好,但现在我准备尝试使用 gmock 进行一些模拟.所以,我通过 NuGe ..
发布时间:2022-01-12 08:31:28 其他开发

gtest.lib 和 gtest_main.lib 有什么区别?

Google 的 C++ 测试框架有两个输出库:一个是 gtest.lib,另一个是 gtest_main.lib.根据 Nik Reiman 的回答 如何使用 Visual Studio 设置 gtest,我们应该链接到 gtest_main.lib,但我正在链接到 gtest.lib,并且我的示例测试用例运行良好. 这两个库有什么区别,我链接到哪个库有关系吗? 解决方案 唯一合理 ..
发布时间:2022-01-11 15:47:44 C/C++开发