如果我有类似的东西:

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/

10-11 21:42