问题标签 [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 投票
3 回答
5625 浏览

c++ - Visual Studio C++:带有谷歌测试的单元测试 exe 项目?

使用 Visual Studio 2010 C++。我正在尝试单元测试,并决定尝试谷歌测试(gtest)。我有一个编译为 MFC 可执行文件的现有项目(我也对如何测试编译为 DLL 的项目感兴趣)。我对单元测试约定的理解是,您应该为测试创建一个新的单独项目。所以我在同一个解决方案中为我的单元测试创​​建了一个新项目。但是我如何链接这些项目呢?我可以从我的测试项目中测试我的 exe 项目的任意函数/方法吗?

这样做的传统方法是什么?

0 投票
5 回答
1539 浏览

googletest - 方法和模拟具有相同的类

我有 2 种方法的课程

我想测试 Fun() 方法取决于 FunRet 返回的内容。所以我想模拟 FunRet。我宁愿不想让 FunRet 成为虚拟的。我怎么能这样做?

0 投票
2 回答
1523 浏览

vxworks - VxWorks 6.6 + / Wind River 3.0 上的谷歌测试

有没有人成功地将 googleTest 移植到 WindRiver 3.0 / VxWorks 6.6 中的实时进程?

我能够构建 gtest,但在链接时出现一些错误。我可以修改这些特定的代码部分,但这只会产生运行时错误。

这是我所看到的: googleTest.so:对isascii(int)' googleTest.so: undefined reference togettimeofday 的未定义引用 googleTest.so:对“strcasecmp”的未定义引用

我有 2 个共享库 (.so):1 个用于 gtest,1 个用于 gtest_main。我有 1 个 RTP(实时进程),其中有我的测试代码。

注意:要让 googletest 在 vxworks 中编译,我必须修改一些标志: 具体来说: GTEST_HAS_POSIX_RE - 0 GTEST_HAS_TR1_TUPLE - 0 GTEST_HAS_STREAM_REDIRECTION 0

非常感谢任何见解或建议。

0 投票
2 回答
29548 浏览

c++ - 使用多种不同类型的参数参数化的 Googletest 值是否可以匹配 mbUnit 的灵活性?

我想编写 C++ Google 测试,它可以使用具有不同数据类型的多个参数的值参数化测试,理想地匹配以下用 C++/CLI 编写的 mbUnit 测试的复杂性。

有关 mbUnit 的解释,请参阅Hanselman 2006 文章。截至 2019 年的编辑,他包含的其他链接已失效。

请注意这是多么紧凑,[Test]属性表明这是一个测试方法,而[Row(...)]属性定义了实例化的值。

甚至更好的是,来自 C# 的这种更具异国情调的测试(将 .Net 属性中可以定义的界限推到 C++/CLI 中的可能性之外):

帮助说值参数化测试将让您只编写一次测试,然后轻松实例化并使用任意数量的参数值运行它。但我相当确定这是指测试用例的数量。

即使不改变数据类型,在我看来参数化测试只能采用一个参数?

2019 年更新

添加是因为我对这个问题感到困惑。显示的Row属性是 mbUnit 的一部分。

有关 mbUnit 的解释,请参阅Hanselman 2006 文章。截至 2019 年的编辑,他包含的其他链接已失效。

在 C# 世界中,NUnit 以更强大和更灵活的方式添加了参数化测试,包括将泛型作为Parameterised Fixtures处理的方式。

以下测试将执行 15 次,每个 x 值执行 3 次,每次结合 5 个从 -1.0 到 +1.0 的随机双精度数。

以下测试夹具将由 NUnit 实例化 3 次,将每组参数传递给适当的构造函数。请注意,有三种不同的构造函数,它们与作为参数提供的数据类型相匹配。

0 投票
3 回答
9273 浏览

c++ - _stricmp with mingw 和 c++0x 不存在?

我目前正在尝试将 googletest 与 MinGW 一起使用,-std=c++0x但它抱怨_stricmp is not declared in this scope我不使用-std=c++0x. 我不知道是什么_stricmp,我刚刚发现它是在 中定义的cstring/string.h,那为什么它在 C++0x 中消失了?

0 投票
3 回答
13514 浏览

c++ - Googletest 不接受 EXPECT_THROW 中的临时对象

我有一个没有默认构造函数的类,但构造函数可能会抛出。我想要一个像这样的测试:

但是编译器 ,g++抱怨没有默认构造函数MyClass. 然而,以下...

...工作,并且测试按预期通过。为什么 Googletest 不接受临时对象?

有趣的是,我重构了我的测试,使文件名不在单独的变量中,当被要求检查时,我发现了以下工作:

但是以下没有:

0 投票
3 回答
19010 浏览

c++ - gtest.lib 和 gtest_main.lib 有什么区别?

Google 的 C++ 测试框架有两个输出库:一个是 gtest.lib,另一个是 gtest_main.lib。根据Nik Reiman关于如何使用 Visual Studio 设置 gtest的回答,我们应该链接到 gtest_main.lib 但我链接到 gtest.lib 并且我拥有的示例测试用例运行良好。

这两个库之间有什么区别,我链接到哪个库有关系吗?

0 投票
2 回答
824 浏览

c++ - Visual Studio 2010:使用 Google 测试构建和开发周期?

将 Visual Studio 2010 C++ 与 googletest 结合使用。我是单元测试的新手,我已经创建了一个测试解决方案来试验它。我在解决方案中有三个项目:

我已将 googletest(和 googlemock)编译链接并成功运行。我的问题是代码测试开发周期。我试图通过测试了解正确的工作流程。目前,如果我将 HelloService.Tests 设置为“启动项目”,那么当我按 F5 时测试运行,但我的 HelloApp 没有。如果我将 HelloApp 设置为启动项目,那么当我按下 F5 时,我的应用程序会运行,但我的测试不会。

我认为我希望我的“HelloApp”作为启动项目,但我的测试在我构建它和运行它之前运行。是对的吗?我该如何设置它来做到这一点?

0 投票
2 回答
6655 浏览

c++ - Google Mock:不允许抽象类类型“xyz”的对象?

使用带有 GMock 的 Visual Studio 2010 C++。尝试为我的类使用的第三方类创建存根对象,但出现以下错误:

错误:不允许抽象类类型“ThirdPartyClassFake”的对象。

第三方类定义如下:

我创建了一个模拟:

现在在我的测试中,我正在尝试做:

错误出现在“ThirdPartyClassFake 存根;” 线。为什么会出现此错误,如何成功创建模拟/存根对象?

0 投票
2 回答
7502 浏览

c++ - Google Mock:在程序退出时发现泄漏的模拟对象?

当我如下定义我的测试时,它可以工作。

ThirdPartyClassFake 是我创建的一个谷歌模拟类。

当我添加将指向我的存根的指针传递给包装类的代码时,我得到一个泄漏的内存错误:

错误是:

不确定它是否相关,但我应该添加ThirdPartyClassFake来自 3rd 方抽象类(我无法控制)的子类,其中包含所有虚拟方法但没有虚拟析构函数。它还使用 Microsoft 特定的属性声明__declspec(novtable)

我认为问题可能在于缺少Google Mock FAQ中描述的虚拟析构函数。但是我相信如果这是第一个测试也应该失败的问题。

如何修复/解决此错误?