现代UnitTest ++替代品

时间:2014-12-30 08:24:07

标签: c++ unit-testing c++11 unittest++

编辑:这个问题可能会被投票结束,因为“不是真正的编程问题”。我只能反驳“nyah!”现在我找到了直接相关的this question并且应该有所帮助。

我有条不紊地升级我的源代码以使用C ++ 11次,而且我的很多代码与之交互的部分之一是UnitTest ++。

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

TEST(testname) {
  // test code
}

声明。

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

所以即使我的代码现在工作正常,现在可以更早地转换到更好的系统,而不是更晚,因为它将减少将来的翻译负担。

我环顾四周,似乎有一些选择可供我使用。特别有趣的是libunittest和其他像CATCH这样仅限标题的人。

我的问题是那些过去可能有过使用UnitTest ++和其他单元测试系统经验的人,对你有用的,以及你有什么建议。我正在寻找一些非常便携的东西,除了C ++ 98/03或C ++ 11编译器(gcc,clang,msvc)和标准库之外没有外部依赖性,并且只有标题是加号但没必要。

所以我猜我的偏好确实倾向于缩小选项范围。即使使用UnitTest ++,我仍然喜欢它的可移植性和自包含性,但是我必须编写一个大约100行左右的代码来扩展它,以便在两个方面为我提供灵活性:

  • 允许我指定要运行的特定测试(无论是按名称选择测试,还是按实现它们的源文件或测试套件名称)
  • 自定义测试的报告行为,例如显示每个测试的时间数据并总结最后的总数 - 我实际上对此的功能和行为有些不满意,例如我不知道如何配置UnitTest ++以应用我的详细测试记者要运行未放入测试套件的测试。

一个完美的答案就像this一样,来自UnitTest ++本身背后的一个人!但那篇文章已经10年了!!

2 个答案:

答案 0 :(得分:2)

您可能会发现Google Test有用。它支持UnitTest ++所做的一切以及更多功能,并且仍然可以维护(并且经常在Google中使用)。此外,它还有一个相应的模拟库Google Mock,用于创建对创建模拟实现非常有用的模拟。

答案 1 :(得分:0)

我还有两个:

两者都是 积极开发


CppUTest

  

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

CppUTest可以与各种编译器和平台一起使用 - 它也可以用于嵌入式系统。此外,还有C interface的内置版。

  

且外部依赖性为零

不多说:下载/结帐和构建,完成。

  

并且只有标题是加号但不是必需的。

不幸的是,这对CppUtest来说是不可能的,它需要它的testlibrary才能进行链接。

  

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

可能并且也在手册中解释(不是很困难)。请参阅here

  

自定义测试的报告行为,例如向每个测试显示时间数据并在结束时总结总计

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


示例代码:

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);
}

最终它不难使用:查看Manual

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


<强>文档

相关问题