使用CATCH C++单元测试框架测试两个std::向量是否相等
Test that two std::vectors are equal using CATCH C++ unit test framework
我是使用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
这样的东西?
另外,我上面的解决方案是,如果一个数组包含两个{1.0, 2.0, 3.0}
;如果两个向量因此而不相等,那也没关系。
您可以使用运算符==:
REQUIRE(vec_1 == vec_2)
最酷的是,Catch在断言失败时会产生出色的输出,而不仅仅是简单的通过/失败:
../test/Array_Vector_Test.cpp:90: FAILED:
CHECK( x == y )
with expansion:
{ "foo", "bar" }
==
{ "foo", "quux", "baz" }
相关文章:
- 将fold表达式与std::一起用于两个元组
- 在声明中合并两个常量"std::set"(不是在运行时)
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 比较两个 std::chrono::time_point 实例时出错
- 简单使用 std::atomic 在两个线程之间共享数据
- 如何获取两个 std::map 的公钥?
- 我需要std::condition,但有两个以上的选择
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 当两个 std::map 对象相同时
- 如何实现对参数顺序不可知的std::same_as的广义形式(即对于两个以上的类型参数)
- 比较两个std::矢量/阵列,或者通常比较两个stl连续器
- 两个不同的进程,在同一地址上有 2 个 std::atomic 变量?
- std::list 的两个 insert() 方法签名之间的实现差异
- std::具有两个输入参数的矢量构造函数
- C++ std::跨两个类的矢量优化
- 如何设置一个 std::vector 与另一个,其中两个是不同类的向量?
- 我正在使用 std::bitset 并尝试创建两个大小为 100,000,000,000 的数组 std::bitset
- 为什么 std::equal 模板由两个类参数化?
- 使用 C++11 在一行中连接两个 std::vector
- C 是否具有对两个STD :: sets,vectors等进行三角比较的标准方法