如果我有类似的东西:
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);
最佳答案
您的用例是:这两个条件中的任何一个都应为true。
因此,使用 ::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
等效-这就是失败的原因。关于c++ - 使用GoogleTest进行复合测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44663629/