是否有类似于NUnit的C ++单元测试库?

时间:2009-09-10 19:49:58

标签: c++ linux unit-testing nunit

我们需要将使用C#和NUnit开发的单元测试工具迁移到Red Hat Linux上运行的C ++。

我们希望尽量减少迁移工作。

我们正在阅读这样的资源:

http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle

但我们没有看到任何类似于NUnit的内容。

12 个答案:

答案 0 :(得分:9)

您是否考虑过使用CppUnit

以下是unit testing frameworks for C++的概述。

答案 1 :(得分:7)

我们使用Google MockGoogle Test。但是,从未使用过NUnit,我无法评论它与NUnit的相似程度。

答案 2 :(得分:6)

还有Boost.Test

答案 3 :(得分:4)

不幸的是,你找不到像NUnit那样的东西。由于C ++没有相同的强反射能力,因此定义测试的过程需要更加明确,而不是像在NUnit中那样使用属性。

我喜欢cxxtest因为它易于设置,并且不需要手动测试注册。

答案 4 :(得分:4)

扩展Mark Bessey's answer:我非常喜欢cxxTest,因为它只是一组C ++头文件& Perl脚本。只要你有一个C ++编译器& Perl,它几乎适用于任何系统。它还具有与IDE集成的功能(尽管我还没有使用它们)。

另外,这是一篇好文章Exploring the C++ Unit Testing Framework Jungle。这篇文章可能已经过时了(大约2004年),但是对这些功能进行了很好的总结。使用以下每个C ++单元测试框架的直接示例:

  • CppUnit的
  • 如Boost.Test
  • CppUnitLite
  • NanoCppUnit
  • 单位++
  • CxxTest

答案 5 :(得分:3)

我建议你试试UnitTest ++:
http://unittest-cpp.sourceforge.net/UnitTest++.html

我不知道它是否与NUnit类似,但它功能强大,优雅且易于使用。

答案 6 :(得分:3)

我使用Boost.Test。我曾经使用CppUnit,但发现它以Java / Junit方式工作,而不是C ++方式。例如,使用setup和teardown方法而不是构造函数和析构函数。此外,测试用例/夹具支持有点费力,因为C ++不支持反射。

我发现Boost.Test更适合我正在测试的C ++代码。它也更强大。过了一会儿,我将所有的CppUnit测试移植到Boost.Test,这花了大约一天时间,我没有回头。

据我所知,cppunit背后的人也写了cxxunit,这更像是C ++ esque。

答案 7 :(得分:2)

Googletest与xUnit的用法非常相似。 Googlemock是迄今为止最好的C ++模拟框架。这些库是跨平台的,具有出色的文档和活跃的用户群。您只需要一个可以处理模板的兼容C ++编译器。

CppUnit的原作者Michael Feathers现在推荐CppUnitLite,这是一个简单的骨架。一旦我在ACCU 2010用Googlemock的乐趣给他打电话,我希望他能接受它: - )

答案 8 :(得分:2)

在这个名为WinUnit的街区有一个相对较新的孩子。我没有时间亲自尝试,但值得一看。

答案 9 :(得分:1)

有一个名为CPPUnit的好词。它起源于Michael Feathers作为JUnit to C ++的端口。我已经使用它,它很棒。但请注意,C ++中的单元测试比其他语言更难。

答案 10 :(得分:0)

有一个叫做Catch2的

https://github.com/catchorg/Catch2

优点如下:

  • 单头部署
  • 没有外部依赖项
  • 测试名称是自由格式的字符串
  • 强大的“断言”
  • 优秀的错误消息
  • 部分!
  • 可以从命令行运行测试

答案 11 :(得分:0)

如果c++/cli在红色帽子上运行,那么您应该能够使用nunit。最坏的情况是将c#代码转换为c ++ / cli。也可能比参阅How to use NUnit to test native C++ code更容易。

相关的is-there-a-c-unit-testing-library-that-is-similar-to-nunit c-c-testing-framework-like-junit-for-java