C单元测试框架比较

新手上路,请多包涵

我知道已经有一些关于 C++ 单元测试框架建议的问题,但是所有的答案都没有帮助,因为他们只是推荐了其中一个框架,但没有提供任何关于(功能)比较的信息。

我认为最有趣的框架是 CppUnit、Boost 和新的 Google 测试框架。有人做过比较吗?

原文由 housemaister 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

我最近发布了 xUnit++ ,专门作为 Google Test 和 Boost Test Library 的替代品(查看 比较)。如果您熟悉 xUnit.Net,那么您已经准备好使用 xUnit++。

 #include "xUnit++/xUnit++.h"

FACT("Foo and Blah should always return the same value")
{
    Check.Equal("0", Foo()) << "Calling Foo() with no parameters should always return \"0\".";
    Assert.Equal(Foo(), Blah());
}

THEORY("Foo should return the same value it was given, converted to string", (int input, std::string expected),
    std::make_tuple(0, "0"),
    std::make_tuple(1, "1"),
    std::make_tuple(2, "2"))
{
    Assert.Equal(expected, Foo(input));
}

主要特点:

  • 难以置信的快:测试 同时 运行。
  • 便携的
  • 自动 测试注册
  • 许多 断言类型(Boost 在 xUnit++ 上没有任何东西)
  • 本机比较 集合
  • 断言分为 三个 级别:
    • 致命错误
    • 非致命错误
    • 警告
  • 简单的 断言 记录: Assert.Equal(-1, foo(i)) << "Failed with i = " << i;
  • 测试 记录: Log.Debug << "Starting test"; Log.Warn << "Here's a warning";
  • 夹具
  • 数据驱动 测试(理论)
  • 选择要运行的测试 基于:
    • 属性匹配
    • 名称子串匹配
    • 测试套件

原文由 moswald 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题