首页 > 解决方案 > GTest 有类似 Catch2 GENERATE 的东西吗?

问题描述

Catch2 GENERATE 看起来很不错,我想在 GTest 中使用类似的东西。

我知道 GTest 中的参数化测试,但我不喜欢从测试主体和值列表中拆分出来,以及对 GetParam() 的丑陋调用。

此外,我喜欢 Catch2 中 GENERATOR 的范围、拍摄、随机功能。

对于那些不熟悉 GENERATE 的人:这是一种神奇的迭代(针对列出的每个值运行测试,而无需用户显式循环这些值)。如果它们是嵌套的,则它们充当“笛卡尔积”,即这将运行此测试 10 次(“one” 2x2 次,“two” 2x3 次)。

TEST_CASE("Generators") {
    auto i = GENERATE(1, 2);
    SECTION("one") {
        auto j = GENERATE(-3, -2);
        REQUIRE(j < i);
    }
    SECTION("two") {
        auto k = GENERATE(4, 5, 6);
        REQUIRE(j != k);
    }
}

range、take、random 是生成值的助手(文档)。

标签: c++unit-testinggoogletestcatch2

解决方案


推荐阅读