在为接下来的几年设置我们的C++单元测试框架的过程中,我们将GoogleTest和CppUnit列入了候选名单.我对两者都有一些经验,而我的偏好是GoogleTest.无论如何要说服我的老板我需要一些事实,所以我在互联网上做了一些阅读,包括手册,维基页面和一些来源.我想出了一个GoogleTest优势列表和一个CppUnit优势(图形测试跑步者).在这里,他们按照感知有用性排序:
假设CppUnit不支持以上所有内容,我是否正确?是否有一个有用的GoogleTest功能在CppUnit中不可用我缺少?
最后但同样重要的是:GoogleTest 缺少哪些优秀的CppUnit功能?
谢谢!
所以我喜欢和喜欢使用Google Test来参与我参与的C++项目.我只是提出一个新的项目,它将是直接的C(一个库),到目前为止看不出任何理由即使它是一个C++框架,也不要继续使用Google Test.拥有C++编译器不会成为问题.
我不应该使用Google Test测试直接C代码的具体原因吗?
谢谢.
我正在尝试开始进行单元测试.我下载了最新版本的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) 我想测试MyException在某种情况下抛出的东西.EXPECT_THROW这里很好.但我也想检查异常是否有特定的状态,例如e.msg() == "Cucumber overflow".
如何在GTest中实现最佳效果?
我刚刚开始一个需要一些跨平台GUI的新项目,我们选择了Qt作为GUI框架.
我们也需要一个单元测试框架.直到大约一年前,我们使用内部开发的C++单元测试框架 - 项目,但我们现在正在转向使用Google Test进行新项目.
有没有人有使用Google Test for Qt-applications的经验?QtTest/QTestLib是更好的选择吗?
我仍然不确定我们想在项目的非GUI部分使用Qt多少 - 我们可能更喜欢在核心代码中使用STL/Boost,并使用基于Qt的GUI的小接口.
编辑:看起来很多人都倾向于QtTest.是否有任何人有经验将其与连续集成服务器集成?此外,在我看来,必须为每个新测试用例处理单独的应用程序会导致很多摩擦.有什么好方法可以解决这个问题吗?Qt Creator是否有一个处理此类测试用例的好方法,或者您是否需要为每个测试用例创建一个项目?
我刚刚下载了googletest,用CMake生成了它的makefile并构建了它.现在,我需要在我的测试项目中使用它.
有了CMake,我被告知不要直接指向gtest库(使用include _directories或link_directories),而是使用find_package().
问题是,生成的gtest makefile没有安装目标.我无法理解find_package(GTest REQUIRED)如果没有某种安装可以工作.此外,将gtest文件夹作为子文件夹放在我的项目中是不可能的.
谢谢你的帮助.
我正在使用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个空格或其他来明确缩进输出.
使用googletest框架时是否可以捕获stdout和stderr ?
例如,我想调用一个将错误写入控制台(stderr)的函数.现在,在测试中调用函数时,我想断言那里没有输出.
或者,也许我想测试错误行为,并希望在我(故意)产生错误时断言某个字符串被打印.
当ASSERT_*宏导致测试用例终止时,EXPECT_*宏继续进行评估.我想知道决定是否使用其中一个的标准.
我是单元测试世界的新手,基本上我是c ++开发人员,在大型产品上工作了近3年,现在我决定对我的代码进行自动单元测试.为此,我在互联网上做了很多研究并遇到了许多工具和框架,最后选择了以下两个:1)Boost测试库2)c ++的Google测试框架
现在我很困惑哪些可供选择.如果有人使用上述任何一项,请分享您的经验.