Se moquer de non-virtuel méthode C++ (gmock)
J'ai la classe
class CSumWnd : public CBaseWnd
{
private:
bool MethodA()
}
S'il vous plaît pouvez-vous aider à la façon de se moquer de MethodA()
sans faire virtuel,
Je n'ai pas compris le concept de hi-perf d'injection de dépendance
OriginalL'auteur Sasi | 2011-04-25
Vous devez vous connecter pour publier un commentaire.
Cela signifie que vous aurez à templatize votre code de production. À l'aide de votre exemple:
CSumWind
définition de la classe:Moqué
CSumWnd
définition de la classe:De Production de classe qui doivent être testés avec moqué de classe
CSumWind
. Désormais, c'est basé sur un modèle de fournir de l'aideCSumWind
classe dans le code de production etMockCSumWnd
classe dans les tests.Instanciation de
TestedClass
de la production:Instanciation de
TestedClass
objet en test exécutable:Voir stackoverflow.com/q/1127918/49972 pour plus d'informations sur les conséquences de ce que vous proposez.
Je suis confronté à problème dans
MOCK_METHOD(MethodA, bool());
stackoverflow.com/questions/46542373/... j'obtiens l'erreur est précisé dans la question ci-dessusOriginalL'auteur beduin
Essayer CppFreeMock et certains d'autres ont mentionné ici.
Exemple:
Je n'ai pas assez de réputation pour ajouter plus de 2 liens en une seule réponse, mise à jour le lien "ici", pas besoin de connexion plus. Le doc intégral peut être trouver sur github.
OriginalL'auteur Louix
Si vous ne souhaitez pas modifier le code existant, voici une solution spécifique pour VC++, je travaille sur (https://github.com/mazong1123/injectorpp). La brève étapes sont les suivantes:
Disons-le code de la clé ici.
Récupérer des méthodes de symboles et adresses de classe. Ci-dessous est l'idée clé de la mise en œuvre. Le code source complet est disponible à https://github.com/mazong1123/injectorpp/blob/master/injectorpp/ClassResolver.cpp
L'étape 2 est trival. C'est seulement du texte en le comparant et le traitement.
Comment injecter la magie de l'asm pour changer la méthode de comportement: (Le code source complet est disponible à https://github.com/mazong1123/injectorpp/blob/master/injectorpp/BehaviorChanger.cpp)
J'ai l'intention de le faire. Récemment, j'ai presque fini le x86 de Windows. Restez à l'écoute.
OriginalL'auteur Jim Ma