使用 GoogleTest 进行复合测试?
Compound Tests with 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);
您的用例是:这两个条件中的任何一个都应该为真。
所以使用 ::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
- 这就是它失败的原因。
如果我有类似的东西:
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);
您的用例是:这两个条件中的任何一个都应该为真。
所以使用 ::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
- 这就是它失败的原因。