使用GoogleTest进行复合测试?

时间:2017-06-20 21:53:56

标签: c++ unit-testing googletest

如果我有类似的话:

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);

1 个答案:

答案 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 - 这就是失败的原因。