是否有广泛使用的C++单元测试框架支持测试类别?

Boi*_*nst 6 c++ unit-testing

我目前正在使用CppUnit进行测试,但由于缺乏对类别概念的支持而感到沮丧.有没有广泛使用的C++单元测试框架支持这个想法?

以下是直接来自NUnit文档的示例:

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture]
  [Category("LongRunning")]
  public class LongRunningTests
  {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是能够将测试分组到不同的类别中,并在指定的类别中执行测试,或者根据类别排除测试.

我尝试过CppUnit,Boost.Test和Google Test,但没有一个直接支持这个想法.

例如,我有单元测试,集成测试,中等测试和大型测试.单元集成测试运行得很快,所以我在自动构建中的每个构建配置中运行它们:Release/Debug,x86/x64,linux/windows.中等测试需要时间来运行,所以我只在Release | x64 | windows build中运行它们.大型测试作为开发辅助工具存在:它们永远不会在自动构建中运行.然后为了增加乐趣,我的功能只存在于x86 | windows中(它很复杂).我用复杂的层次结构完成所有这些,CppUnit很乐意支持.但是,使用"release","debug","x86"等类别进行此操作会更好.

在CppUnit中,我的测试目前在Fixture类中.理想情况下,我希望能够使用类别标记这些灯具,然后我可以相应地进行过滤.

测试层次结构不做的一个关键事情是,哪个类别可以做,就是在一个夹具上有多个类别.

Mar*_* Ba 2

Boost.Test中的 --run_test 选项支持测试和/或套件名称的通配符匹配。我不完全确定匹配有多灵活,但是如果您要将类似标签的命名部分放入您的测试(-suite)名称中,您也许可以运行--run_test=suite_LongRunning*/*类似的东西。


我还偶然发现了xUnit++,它具有可用于运行不同类别的属性。(因为它是根据 NUnit 建模的,所以这应该不足为奇。)