gpt4 book ai didi

c++ - 在 C++ 中制作未命名容器以在单元测试中进行临时比较

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

在 C++ 单元测试代码中,当我需要比较两个 vector 时,我会创建临时 vector 来存储预期值。

std::vector<int> expected({5,2,3, 15});
EXPECT_TRUE(Util::sameTwoVectors(result, expected));

我能把它写成一行吗?在 python 中,我可以生成一个带有“[...]”的列表。

sameTwoVectors(members, [5,2,3,15])

最佳答案

std::vector 包括 initializer-list constructor这需要 std::initializer_list 只要 sameTwoVectors 就可以使用统一的初始化语法函数按值、右值引用或 const 接受 vector 引用。

namespace Util
{
bool sameTwoVectors(
const std::vector<int>& result,
const std::vector<int>& expected)
{
return result == expected;
}
}


int main()
{
std::vector<int> result;

EXPECT_TRUE(Util::sameTwoVectors(result, {5,2,3,15}));
}

可选,如果 sameTwoVectors只需做一个简单的比较就可以消除它。当您调用 EXPECT_TRUE 时,只需在其位置使用比较表达式即可.权衡是您必须指定 std::vector<int>显式而不是依赖隐式转换构造函数。它少了几个字符,并且更清楚预期的结果是什么。

EXPECT_TRUE(result == std::vector<int>({5,2,3,15}));

关于c++ - 在 C++ 中制作未命名容器以在单元测试中进行临时比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17129403/

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