在C ++中的单元测试代码中,当我需要比较两个向量时,我创建临时向量来存储期望值。
std::vector<int> expected({5,2,3, 15});
EXPECT_TRUE(Util::sameTwoVectors(result, expected));
我可以一行吗?在python中,我可以生成一个带有“[...]”的列表。
sameTwoVectors(members, [5,2,3,15])
答案 0 :(得分:3)
由于std::vector
包含initializer-list constructor std::initializer_list
,只要sameTwoVectors
函数接受矢量值,右值引用或{{3}},您就可以使用统一初始化语法const
参考。
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}));
答案 1 :(得分:1)
如果Util::sameTwoVectors
期望const引用或只是一个值,您可以(假设C++11支持)将其写为
EXPECT_TRUE(Util::sameTwoVectors(result, std::vector<int>{5, 2, 3, 15}));