2017-06-20 60 views
1

如果我有这样的: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

你的用例是:这两个条件中的任何一个都应该是真的。 所以用::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 - 这就是它失败的原因。

+0

谢谢!我不认为要调查GoogleMock的事情。 –