标签: googletest

GoogleTest与CppUnit:事实

在为接下来的几年设置我们的C++单元测试框架的过程中,我们将GoogleTestCppUnit列入了候选名单.我对两者都有一些经验,而我的偏好是GoogleTest.无论如何要说服我的老板我需要一些事实,所以我在互联网上做了一些阅读,包括手册,维基页面和一些来源.我想出了一个GoogleTest优势列表和一个CppUnit优势(图形测试跑步者).在这里,他们按照感知有用性排序:

  • INSTANTIATE_TEST_CASE_P用你想要的任何参数实例化一个测试用例,包括笛卡尔积
  • FRIEND_TEST用于测试私有类成员(针对所有遗留代码)
  • 将断言转变为断点
  • 非致命的断言
  • "开箱即用"googlemock整合
  • 自动测试检测,无需枚举它们
  • 可以禁用和启用测试
  • 可以使用名称模式选择要运行的测试
  • 值/类型参数化测试
  • 用户定义的谓词断言
  • 死亡测试
  • 更丰富的断言
  • 类型断言
  • 在子程序上断言
  • 可以使用<<添加其他调试信息到断言
  • RecordProperty将最后一个属性值发送到XML输出
  • SCOPED_TRACE有助于理解来自子例程或循环内部的断言失败的上下文.
  • xUnit XML输出可以立即由Jenkins显示,而不需要在它们之间进行XSLT转换
  • 支持自定义类型打印机
  • 测试指示消耗的时间(我怀疑CppUnit也可以这样做,但我还没想到它)
  • 测试事件监听器API(用户定义的插件)
  • 测试改组
  • 没有例外和RTTI

假设CppUnit不支持以上所有内容,我是否正确?是否有一个有用的GoogleTest功能在CppUnit中不可用我缺少?

最后但同样重要的是:GoogleTest 缺少哪些优秀的CppUnit功能?

谢谢!

c++ tdd unit-testing cppunit googletest

63
推荐指数
2
解决办法
3万
查看次数

Google Test可以测试C代码吗?

所以我喜欢和喜欢使用Google Test来参与我参与的C++项目.我只是提出一个新的项目,它将是直接的C(一个库),到目前为止看不出任何理由即使它是一个C++框架,也不要继续使用Google Test.拥有C++编译器不会成为问题.

我不应该使用Google Test测试直接C代码的具体原因吗?

谢谢.

c googletest

62
推荐指数
5
解决办法
3万
查看次数

Visual Studio 2012中的Google Test

我正在尝试开始进行单元测试.我下载了最新版本的gtest,并将其解压缩到A:\gtest指定的指令中,我打开了gtest.sln.如果我同意更新它,Visual Studio只允许我打开sln.然后,当我尝试构建时,我遇到了一堆错误:

1>------ Build started: Project: gtest, Configuration: Debug Win32 ------
1>  gtest-all.cc
1>a:\gtest\include\gtest\gtest-printers.h(550): error C2977: 'std::tuple' : too many template arguments
1>          b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : see declaration of 'std::tuple'
1>a:\gtest\include\gtest\gtest-printers.h(558): error C2977: 'std::tuple' : too many template arguments
1>          b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : see declaration of 'std::tuple'
1>a:\gtest\include\gtest\internal\gtest-param-util-generated.h(4017): error C2977: 'std::tuple' : too many template arguments
1>          b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : see declaration of 'std::tuple'
1>          a:\gtest\include\gtest\internal\gtest-param-util-generated.h(4249) …
Run Code Online (Sandbox Code Playgroud)

c++ googletest visual-c++ c++11 visual-studio-2012

55
推荐指数
3
解决办法
2万
查看次数

测试抛出的特定异常类型,并且异常具有正确的属性

我想测试MyException在某种情况下抛出的东西.EXPECT_THROW这里很好.但我也想检查异常是否有特定的状态,例如e.msg() == "Cucumber overflow".

如何在GTest中实现最佳效果?

c++ unit-testing exception googletest

48
推荐指数
6
解决办法
4万
查看次数

我应该为Qt使用什么单元测试框架?

我刚刚开始一个需要一些跨平台GUI的新项目,我们选择了Qt作为GUI框架.

我们也需要一个单元测试框架.直到大约一年前,我们使用内部开发的C++单元测试框架 - 项目,但我们现在正在转向使用Google Test进行新项目.

有没有人有使用Google Test for Qt-applications的经验?QtTest/QTestLib是更好的选择吗?

我仍然不确定我们想在项目的非GUI部分使用Qt多少 - 我们可能更喜欢在核心代码中使用STL/Boost,并使用基于Qt的GUI的小接口.

编辑:看起来很多人都倾向于QtTest.是否有任何人有经验将其与连续集成服务器集成?此外,在我看来,必须为每个新测试用例处理单独的应用程序会导致很多摩擦.有什么好方法可以解决这个问题吗?Qt Creator是否有一个处理此类测试用例的好方法,或者您是否需要为每个测试用例创建一个项目?

qt unit-testing googletest qttest qtestlib

47
推荐指数
5
解决办法
3万
查看次数

CMake + GoogleTest

我刚刚下载了googletest,用CMake生成了它的makefile并构建了它.现在,我需要在我的测试项目中使用它.

有了CMake,我被告知不要直接指向gtest库(使用include _directorieslink_directories),而是使用find_package().

问题是,生成的gtest makefile没有安装目标.我无法理解find_package(GTest REQUIRED)如果没有某种安装可以工作.此外,将gtest文件夹作为子文件夹放在我的项目中是不可能的.

谢谢你的帮助.

cmake googletest

47
推荐指数
5
解决办法
3万
查看次数

在Google Test中打印其他输出

我正在使用googletest C++测试框架.通常,运行测试的文本输出如下所示:

[ RUN      ] MyTest.Fuzz
[       OK ] MyTest.Fuzz (1867 ms)

我想以相同的格式输出一些额外的数据,例如:

[ RUN      ] MyTest.Fuzz
[          ] random seed = 1319760587
[       OK ] MyTest.Fuzz (1867 ms)

我在googletest文档中找到了Logging Additional Information,但它似乎只是将结构化数据发送到XML输出,而不是标准控制台输出.

我可以在我的单元测试中调用googletest函数,以这种格式输出文本吗?手动将数据发送到cout工作,但它不包括通常的彩色输出,所以我必须通过打印13个空格或其他来明确缩进输出.

c++ googletest

45
推荐指数
5
解决办法
5万
查看次数

如何使用googletest捕获stdout/stderr?

使用googletest框架时是否可以捕获stdout和stderr ?

例如,我想调用一个将错误写入控制台(stderr)的函数.现在,在测试中调用函数时,我想断言那里没有输出.

或者,也许我想测试错误行为,并希望在我(故意)产生错误时断言某个字符串被打印.

c++ unit-testing stdout googletest stderr

44
推荐指数
3
解决办法
3万
查看次数

在GoogleTest中使用ASSERT和EXPECT

当ASSERT_*宏导致测试用例终止时,EXPECT_*宏继续进行评估.我想知道决定是否使用其中一个的标准.

c++ unit-testing googletest

38
推荐指数
3
解决办法
4万
查看次数

提升测试与Google测试框架

我是单元测试世界的新手,基本上我是c ++开发人员,在大型产品上工作了近3年,现在我决定对我的代码进行自动单元测试.为此,我在互联网上做了很多研究并遇到了许多工具和框架,最后选择了以下两个:1)Boost测试库2)c ++的Google测试框架

现在我很困惑哪些可供选择.如果有人使用上述任何一项,请分享您的经验.

boost automated-tests unit-testing googletest

38
推荐指数
3
解决办法
3万
查看次数