2017-06-20 57 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的事情。 –