gpt4 book ai didi

c++ - 使用 CATCH C++ 单元测试框架测试两个 std::vectors 是否相等

转载 作者:可可西里 更新时间:2023-11-01 15:54:55 26 4
gpt4 key购买 nike

我是 CATCH 的新手,我想知道如何测试两个 std::vectors 是否相等。

我非常天真的尝试是这样的:

#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include <vector>

TEST_CASE( "are vectors equal", "vectors")
{
std::vector<int> vec_1 = {1,2,3};
std::vector<int> vec_2 = {1,2,3};

REQUIRE (vec_1.size() == vec_2.size());

for (int i = 0; i < vec_1.size(); ++i)
REQUIRE (vec_1[i] == vec_2[i]);
}

有更好的方法吗?像魔法一样的东西REQUIRE_VECTOR_EQUAL

此外,如果一个数组包含 double {1.0, 2.0, 3.0},我的上述解决方案将通过;如果两个 vector 因此被认为不相等也没关系。

最佳答案

您可以使用 operator== :

REQUIRE(vec_1 == vec_2)

很酷的是,当断言失败时,Catch 会产生出色的输出,而不仅仅是简单的通过/失败:

../test/Array_Vector_Test.cpp:90: FAILED:
CHECK( x == y )
with expansion:
{ "foo", "bar" }
==
{ "foo", "quux", "baz" }

关于c++ - 使用 CATCH C++ 单元测试框架测试两个 std::vectors 是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593935/

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