如果我有类似的话:
ASSERT_TRUE(RANGE(val1, val2, abs_err) || RANGE(val1, val3, abs_err));
我如何使用ASSERT_NEAR
代替ASSERT_TRUE
?
我试图将语句拆分为两个ASSERT_NEAR
语句,如下所示,但测试失败了。
ASSERT_NEAR(val1, val2, abs_err);
ASSERT_NEAR(val1, val3, abs_err);
答案 0 :(得分:1)
您的用例是:这两个条件中的任何一个都应该是真的。
所以使用::testing::AnyOf(m1,m2,...)
!
匹配器世界中ASSERT_NEAR(lhs,rhs,max_error)
的等效值为::testing::DoubleNear(rhs,max_error)
- 因此您的示例将如下所示:
ASSERT_THAT(val1, AnyOf(DoubleNear(val2, abs_err),
DoubleNear(val3, abs_err)));
如果您需要两个条件都属实 - 请使用::testing::AllOf
- 实际上您的尝试只相当于AllOf
- 这就是失败的原因。