Aka*_*all 10 c++ vector c++11 catch-unit-test
我是一个使用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]);
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?像魔术一样的东西REQUIRE_VECTOR_EQUAL?
另外,我的上述解决方案是,如果一个数组包含双精度数则传递{1.0, 2.0, 3.0}; 如果因此而认为两个向量不相等就没问题.
0x4*_*2D2 12
你可以使用operator ==:
REQUIRE(vec_1 == vec_2)
Run Code Online (Sandbox Code Playgroud)
很酷的是,当断言失败时,Catch会产生出色的输出,而不仅仅是简单的通过/失败:
../test/Array_Vector_Test.cpp:90: FAILED:
CHECK( x == y )
with expansion:
{ "foo", "bar" }
==
{ "foo", "quux", "baz" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2610 次 |
| 最近记录: |