繁体   English   中英

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

[英]Is there a C++ unit testing library that is similar to NUnit?

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

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

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

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

但是我们没有看到任何类似于 NUnit 的东西。

您是否考虑过使用CppUnit

以下是C++ 单元测试框架的概述。

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

还有Boost.Test

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

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

扩展Mark Bessey 的回答:我真的很喜欢cxxTest,因为它只是一组 C++ 头文件和 Perl 脚本。 只要您有 C++ 编译器和 Perl,它几乎可以在任何系统上运行。 它还具有与您的 IDE 集成的功能(尽管我没有使用它们)。

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

  • 单位
  • Boost.Test
  • CppUnitLite
  • 纳米Cpp单元
  • 单位++
  • 测试

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

不知道是不是和NUnit类似,但是功能强大,优雅,简单易用。

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

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

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

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

CppUnit 的原作者 Michael Feathers 现在推荐 CppUnitLite,这是一个基本框架。 一旦我在ACCU 2010 上为他带来了 Googlemock 的乐趣,我希望他会接受它:-)

该块上有一个相对较新的孩子,名为WinUnit 我没有时间自己尝试,但它可能值得一看。

有一个很好的叫做CPPUnit 它最初是由 Michael Feathers 将 JUnit 移植到 C++ 的。 我和它一起工作过,它很棒。 但请注意,C++ 中的单元测试比其他语言更难。

有一种叫做 Catch2:

https://github.com/catchorg/Catch2

以下是优点:

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

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

相关is-there-ac-unit-testing-library-that-is-similar-to-nunit cc-testing-framework-like-junit-for-java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM