首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >现代UnitTest++替换

现代UnitTest++替换
EN

Stack Overflow用户
提问于 2014-12-30 08:24:06
回答 2查看 1.1K关注 0票数 2

编辑:这个问题可能投票结束,因为“不是一个真正的编程问题”。对此,我只能反驳"nyah!“现在我确实找到了这个问题,它是直接相关的,应该会有所帮助。

我正在有条不紊地升级我的源代码,以获得与C++11时代,而其中一部分,我的代码与之交互的是UnitTest++。

我将我的每个实现cpp文件的后半部分专门用于单元测试,因此它们包含了许多

代码语言:javascript
复制
TEST(testname) {
  // test code
}

声明。

现在,UnitTest++已经有8年的历史了,它仍然编译得很好,所以我不迫切需要替换它。然而,我发现它可能不再被维护(尽管它现有的功能看起来确实足够坚实,这是一个不好的迹象),因为网站和sourceforge已经瘫痪了。

因此,尽管我的代码现在运行良好,但更早而不是更晚地切换到更好的系统可能对我有好处,因为它将在未来减轻翻译负担。

我环顾四周,似乎有几种选择可供选择。特别令人感兴趣的是脂试验和其他一些像捕获这样的只有头的。

我的问题是,对于那些在过去和其他单元测试系统中可能有过UnitTest++经验的人来说,什么对您很好,如果您有任何建议的话。我正在寻找的东西是非常可移植的,它除了C++98/03或C++11编译器(gcc、clang、msvc)和标准库之外,没有任何外部依赖,而且只有头是一个加号,但不是必需的。

因此,我想我的偏好确实会缩小选择范围。即使有了UnitTest++,我也喜欢它的可移植性和自约束性,但我必须编写大约100行代码才能在两种方式上灵活地扩展它:

  • 请允许我指定要运行的特定测试(无论是按名称选择测试,还是按实现测试的源文件选择测试,还是选择测试套件名称)
  • 为测试定制报告行为,例如显示每次测试的计时数据,并在测试结束时总结总计--实际上,我对这些测试的功能和行为有些不满意,例如,我不知道如何配置UnitTest++来应用我的详细测试报告来运行未放在测试套件中的测试。

一个完美的答案应该是像这样的东西,而不是别人,而是UnitTest++本身背后的一个家伙!但那篇文章已经10年了!

EN

回答 2

Stack Overflow用户

发布于 2014-12-30 08:27:02

您可能会发现谷歌测试是有用的。它支持UnitTest++所做的一切和更多的事情,而且它仍然被维护(并且经常在Google内使用)。此外,它还有一个相应的模拟库,Google用于创建模拟,这对于创建模拟实现非常有用。

票数 2
EN

Stack Overflow用户

发布于 2015-01-14 19:54:34

我还有两个:

  • CppUTest
  • CxxTest (尚未测试)

两者都是积极开发的

CppUTest

非常便携..。超越C++98/03或C++11编译器(gcc、clang、msvc)和标准库

CppUTest可以与各种编译器和平台一起使用--它也适用于嵌入式系统。此外,at在C接口中有一个构建。

并且它的外部依赖性为零。

没什么好说的:下载/签出并构建,完成。

在只有头的地方是一个加号,但不是必要的。

不幸的是,这在CppUtest中是不可能的,它需要它的测试库来链接。

请允许我指定要运行的特定测试。

可能,也可以在手册中解释(不是很难)。见这里

自定义测试报告行为,例如每次测试显示定时数据,最后汇总总计

在详细模式下,这是每个默认情况下完成的。还可以导出带有结果的JUnit Xml文件。此外,您还可以为所有步骤和输出类型自定义输出格式。

示例代码:

代码语言:javascript
复制
TEST_GROUP(FirstTestGroup)
{
     /*
      * Test group = test suite
      * You can implement tear down / setup here too
      */
};

TEST(FirstTestGroup, FirstTest)
{
   FAIL("Fail me!");
}

TEST(FirstTestGroup, SecondTest)
{
   int value = 4;
   const int expected = 4;

   CHECK_EQUAL(expected, value);
}

最后,它并不难使用:检查手册

顺便说一句。它包含模拟(CppUMock)和集成内存泄漏检测器。

Documentation:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27701912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档