Question

Il suffit de passer des tests unitaires avec C ++. On dirait que je devrai écrire plusieurs cours de talon au fur et à mesure. Je comprends qu'il y a une différence entre les simulations et les talons. Fondamentalement, il semble que les simulations soient destinées lorsque vous testez quelque chose s'est produit sur l'objet (par exemple, la vérification) tandis que les talons facilitent simplement votre test. Je suppose que pour la moquerie, je peux utiliser GoogleMock mais je n'y vois rien pour créer des talons (GenerateStub d'Ala Rhinomocks).

Existe-t-il un moyen de générer automatiquement des talons? GoogleMock a-t-il un support pour les talons? Ou dois-je à peu près créer manuellement des talons pour les tests?

Était-ce utile?

La solution

Je pense que la pièce manquante du puzzle est que vous n'avez pas à définir une attente sur une méthode et que vous pouvez simplement définir une valeur de retour par défaut.

Moquers

Toutes les discussions et les exemples dans le "Google Mock For Dummies"est axé sur la définition des attentes. Tout parle d'utiliser un code similaire à ce qui suit:

EXPECT_CALL(turtle, PenDown())
      .Times(AtLeast(1));

C'est ce que vous voulez pour vous moquer, mais pour les coups, vous n'avez aucune attente. Après avoir lu cette intro, je ne savais pas comment utiliser GoogleMOCK pour le coup.

Talons

Le commentaire de Ratkok m'a amené à savoir comment définir une valeur de retour par défaut. Voici comment spécifier une valeur de retour pour un objet moqué mais aucune attente:

ON_CALL(foo, Sign(_))
      .WillByDefault(Return(-1));

http://code.google.com/p/googlemock/wiki/cookbook#setting_the_default_actions_for_a_mock_method

Il semble que GoogleMOCK émettra un avertissement si vous appelez une méthode qui n'a pas d'attente_call. Apparemment, vous pouvez empêcher cet avertissement en utilisant leur Nicock construire ou vous pouvez simplement l'ignorer. De plus, il semble que vous puissiez éviter l'avertissement en utilisant un expects à la place (ce qui je ne sais pas si c'est une bonne idée pour les talons). Du Google FAQ Mock:

EXPECT_CALL(foo, Bar(_))
    .WillRepeatedly(...);

Je crois que c'est exactement ce que j'essayais de comprendre.

Mise à jour

Je peux confirmer que cela fonctionne. J'ai écrit un test unitaire à l'aide de Google Test avec GoogleMOCK et j'ai pu étouffer une méthode pour une classe à l'aide de sur_call.

Autres conseils

La seule différence entre une simulation et un talon est qu'un simulation applique le comportement, alors qu'un talon ne le fait pas.

Pour autant que je sache, les simulations de Google Mock sont en fait des talons par défaut. Ils n'appliquent un comportement que si vous placez des affirmations sur les différentes méthodes.

Regarde ça: bordereau Et la discussion similaire ici.

Cette question Peut-être aussi utile / associé.

En ce qui concerne Google Mocks - nous l'utilisons sur mon projet actuel pour automatiser entièrement l'implémentation Stume. Pratiquement toute la base de code de stub est implémentée à l'aide de Google Mocks.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top