gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:05 24 4
gpt4 key购买 nike

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

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

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

[TestFixture]
[Category("LongRunning")]
public class LongRunningTests
{
// ...
}
}

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

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

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

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

测试层次结构做的一件关键事情是在单个夹具上有多个类别,而类别做。

最佳答案

我不确定我是否理解这个问题。请允许我编写一些伪代码,看看我是否理解:

class TestCategory : public CPPUNIT_NS::TestCase {

CPPUNIT_TEST_SUITE_BEGIN(TestCategory);
CPPUNIT_TEST(myTestFunction);
CPPUNITT_TEST_SUITE_END();

protected:

void myTestFunction() {}

}

您可以有 n 个这样的类。主要是:

// headers omitted

CPPUNT_TEST_SUITE_REGISTRATION(TestCategory)
// more registrations here
CPPUNIT_TEST_SUITE_REGISTRATION(TestCategory_n_)

int main(int argc, char** argv) {

// test runner steps
}

请原谅我的迟钝,但您正在寻找测试架构中的逻辑分区,是吗?如果是这样,您可以通过类对测试进行分组,并根据需要将它们包含在主函数中。

帮助我理解。谢谢。

关于c++ - 是否有任何广泛使用的支持测试类别的 C++ 单元测试框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com