2017-06-20 2 views
1

Si j'ai quelque chose comme:Tests composés avec GoogleTest?

ASSERT_TRUE(RANGE(val1, val2, abs_err) || RANGE(val1, val3, abs_err)); 

Comment pourrais-je utiliser ASSERT_NEAR au lieu de ASSERT_TRUE?

J'ai essayé de diviser l'instruction en deux instructions ASSERT_NEAR, comme ci-dessous, mais le test échoue.

ASSERT_NEAR(val1, val2, abs_err); 
ASSERT_NEAR(val1, val3, abs_err); 

Répondre

1

Votre cas d'utilisation est: l'une de ces deux conditions doit être vraie. Donc, utilisez ::testing::AnyOf(m1,m2,...)!

équivalent de ASSERT_NEAR(lhs,rhs,max_error) dans le monde de matchers est ::testing::DoubleNear(rhs,max_error) - de sorte que votre exemple ressemblera à ceci:

ASSERT_THAT(val1, AnyOf(DoubleNear(val2, abs_err), 
         DoubleNear(val3, abs_err))); 

Si vous avez besoin de vos deux conditions sont vraies - utiliser ::testing::AllOf - en fait votre tentative est juste équivalent de AllOf - c'est pourquoi il a échoué.

+0

Merci beaucoup! Je n'ai pas pensé à enquêter sur les choses GoogleMock. –