Google se Moquer de tests unitaires méthodes statiques en c++
Je viens de commencer à travailler sur les tests unitaires (à l'aide de BOOST cadre pour les tests, mais pour se moque-je utiliser Google Maquette) et j'ai cette situation :
class A
{
static int Method1(int a, int b){return a+b;}
};
class B
{
static int Method2(int a, int b){ return A::Method1(a,b);}
};
Donc, j'ai besoin de créer des maquettes de catégorie A, et de faire de mon classe B de ne pas utiliser de vrais Method1 à partir d'Une classe, mais pour l'utiliser en dérision.
Je ne suis pas sûr de la façon de le faire, et je ne pouvais pas trouver un exemple similaire.
Je ne suis pas familier avec gmock, mais ne pourriez-vous pas tout simplement un lien
Autant que je sache, il n'y a différentes façon de traiter avec des méthodes statiques. Je pourrais probablement résoudre ce avec faire Method1 virtuel, et pour ajouter un constructeur dans la classe B, de sorte qu'il ressemble à quelque chose comme le B(A &a):a_in_class_b(a), {}, puis appel de Method1 devrait ressembler à ceci : a_in_class_b->Method1(); Mais je veux voir si il ya une autre façon.
B.o
et mockA.o
?Autant que je sache, il n'y a différentes façon de traiter avec des méthodes statiques. Je pourrais probablement résoudre ce avec faire Method1 virtuel, et pour ajouter un constructeur dans la classe B, de sorte qu'il ressemble à quelque chose comme le B(A &a):a_in_class_b(a), {}, puis appel de Method1 devrait ressembler à ceci : a_in_class_b->Method1(); Mais je veux voir si il ya une autre façon.
OriginalL'auteur Jonhtra | 2012-01-20
Vous devez vous connecter pour publier un commentaire.
Vous pouviez changer de catégorie B dans un modèle :
et puis créer une maquette :
Avant chaque test, initialiser la statique de l'objet fantaisie
MockA::mock
.Une autre option est plutôt que d'appeler directement
A::Method1
, créer un foncteur objet (peut-être std::type de fonction) dans la classe B, et l'appeler dans le Method2. Ensuite, il est plus simple, car vous n'auriez pas besoin MockA, parce que vous créez un rappel à MockCalc::Method1 à cet objet. Quelque chose comme ceci :et de l'initialiser :
il devrait y avoir l'option "accepter les réponses" sur le bouton de gauche, si cette réponse est celle que vous cherchez 😉
O oui, je peux le voir maintenant, je vais vous cliquez dessus, je suis nouveau ici. Je vois qu'il ya certains de notation pour chaque utilisateur et ce "accepter de répondre à" l'augmentation de ce classement 🙂 j'ai encore une question similaire lié à ce. Pour poster une nouvelle, ou à demander dans les commentaires ? 🙂
J'ai posté une nouvelle qustion ainsi, lorsque vous devez prendre le temps de jeter un oeil 🙂
OriginalL'auteur BЈовић