问题标签 [googletest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
43826 浏览

c++ - 如何让我的课程成为 google-test 课程的朋友?

我听说有可能让 google-test TestCase 类朋友加入我的类,从而使测试能够访问我的私人/受保护成员。

如何做到这一点?

0 投票
1 回答
3088 浏览

c++ - C++ 模拟/测试 boost::asio::io_stream - 基于异步处理程序

经过多年的 C#,我最近回到了 C/C++。在那些年里,我发现了模拟和单元测试的价值。

在 C# 中查找 Mocks 和单元测试的资源是微不足道的。WRT Mocking,与 C++ 无关。

我想要一些关于其他人如何使用 boost 模拟和测试异步 io_service 处理程序的指导。

例如,在 C# 中,我会使用 MemoryStream 来模拟 IO.Stream,并假设这是我应该采取的路径。

  • C++ 模拟/测试最佳实践
  • boost::asio::io_service 模拟/测试最佳实践
  • C++ 异步处理程序模拟/测试最佳实践

我已经用 googlemock 和 googletest 开始了这个过程。

0 投票
2 回答
14880 浏览

c++ - GoogleTest:从测试中访问环境

我正在为 C++(Google 的单元测试框架)尝试 gtest,并且我创建了一个 ::testing::Environment 子类来初始化和跟踪我大部分测试所需的一些东西(并且不想要设置不止一次)。

我的问题是:我如何实际访问 Environment 对象的内容?我想我理论上可以在我的测试项目中将环境保存在全局变量中,但是有更好的方法吗?

我正在尝试对一些已经存在(非常纠结)的东西进行测试,所以设置非常繁重。

0 投票
3 回答
4717 浏览

c++ - 编写 Makefile.am 来调用 googletest 单元测试

我正在尝试将我的第一个单元测试添加到现有的开源项目中。具体来说,我添加了一个名为 audio_manager 的新类:

我创建了一个镜像实现文件结构的 src/test 目录结构,并编写了我的googletest单元测试:

现在,我正在尝试设置我的 Makefile.am 来编译和运行单元测试:

我从以下位置复制了 Makefile.am:

有没有人给我一个简单的食谱,或者对我来说是神秘的自动制作文档?:)

0 投票
3 回答
707 浏览

visual-studio-2008 - 在同一解决方案上交叉链接不同项目时,Visual Studio 2008 上的 C++ 链接问题

我正在使用谷歌测试框架来设置一些单元测试。我的解决方案中有三个项目:

  • FN(我的项目)
  • FN_test(我的测试)
  • gtest(谷歌测试框架)

我将 FN_test 设置为将 FN 和 gtest 作为引用(依赖项),然后我想我已经准备好设置我的测试了(我已经将每个人都设置为 /MTd(不这样做会导致我之前链接错误)) .

特别是,我在 FN 中定义了一个名为 Embark 的类,我想使用 FN_test 进行测试。到目前为止,一切都很好。因此,我使用 googletest 编写了一个名为 EmbarkTest 的类,声明了成员 Embark* 并在构造函数中写入:

然后,按 F7,我得到以下信息:

1>FN_test.obj : error LNK2019: unresolved external symbol "public: __thiscall Embark::Embark(int,int)" (??0Embark@@QAE@HH@Z) referenced in function "protected: __thiscall EmbarkTest::EmbarkTest(void)" (??0EmbarkTest@@IAE@XZ) 1>D:\Users\lg\Product\code\FN\Debug\FN_test.exe : fatal error LNK1120: 1 unresolved externals

有人知道我做错了什么和/或我能做些什么来解决这个问题吗?

编辑:来自 Embark.h 的相关代码

0 投票
3 回答
62309 浏览

c++ - 在 GoogleTest 中使用 ASSERT 和 EXPECT

虽然 ASSERT_* 宏导致测试用例终止,但 EXPECT_* 宏继续其评估。我想知道决定是否使用其中一个的标准。

0 投票
3 回答
3071 浏览

c++ - 如何将 Cppunit 测试迁移到 GoogleTest?

我有一堆用 CPPunit 编写的模块测试,其中包含一些手工创建的模拟。我正在寻找一种尽可能顺利地将它们迁移到 GoogleTest 的方法。你试过这样的操作吗?需要付出什么努力?

0 投票
4 回答
5231 浏览

unit-testing - 如何防止 qFatal() 中止应用程序?

我的 Qt 应用程序使用 Q_ASSERT_X,它调用 qFatal(),它(默认情况下)中止应用程序。这对应用程序来说很好,但我想在对应用程序进行单元测试时抑制这种行为。(我正在使用Google 测试框架。)我在一个单独的项目中进行单元测试,静态链接到我正在测试的类。qFatal()的文档内容如下:

使用致命消息 msg 调用消息处理程序。如果没有安装消息处理程序,则将消息打印到 stderr。在 Windows 下,消息被发送到调试器。

如果您使用默认消息处理程序,此函数将在 Unix 系统上中止以创建核心转储。在 Windows 上,对于调试版本,此函数将报告 _CRT_ERROR 使您能够将调试器连接到应用程序。

...

要在运行时抑制输出,请使用 qInstallMsgHandler() 安装您自己的消息处理程序。

所以这是我的 main.cpp 文件:

但是我的应用程序仍然在断言处停止。我可以说我的自定义处理程序正在被调用,因为运行我的测试时的输出是:

我的致命:MyClass::doSomething 中的 ASSERT 失败:“doSomething()”,文件 myclass.cpp,第 21 行 程序意外完成。

即使断言失败,我该怎么做才能让我的测试继续运行?

0 投票
3 回答
11203 浏览

qt - 在 Windows 中使用来自 Qt 的 Google Test

我有一个简单的测试文件 TestMe.cpp:

我将 Google Test 构建为静态库。(如果相关,我可以提供makefile。)

我可以毫无问题地从命令行编译 TestMe.cpp:

它按预期运行。

但是,我无法在 Qt 中编译它。我的 Qt 项目文件,在同一目录中:

这会导致 17 个与 gtest 函数相关的“未解析的外部符号”错误。

我在这里拉头发,因为我确信这很简单。有任何想法吗?

以下是一些未定义的外部符号:

0 投票
2 回答
4758 浏览

visual-studio-2010 - Visual Studio 2010 中的 GoogleMock 和 GoogleTest

有没有人在 Visual Studio 2010 中成功构建了 gmock 和 gtest?我已经尝试使用 1.5.0 版本,但我只得到难以理解的编译错误。