Ce sera probablement un bot d'une question dérangeante, mais je ferai de mon mieux. J'ai un simple programme C++ dont j'ai besoin de construire des tests. J'ai 2 Classes que j'utilise en plus de celles que j'utilise, elles s'appellent WebServer et BusinessLogicLayer.Test du programme C++ avec des classes de test sur des classes normalement utilisées
Pour tester mon propre code, j'ai créé mes propres versions de ces classes qui alimentent les données factices de ma classe pour tester sa fonctionnalité.
J'ai besoin de savoir d'une manière ou d'une autre, via un makefile par exemple, comment dire au code source d'utiliser les classes de test sur les classes normalement utilisées. Les classes de test se trouvent dans un fichier C++ "testeur" différent, et le fichier C++ du testeur a également son propre fichier d'en-tête.
Cordialement
Paul
post-scriptum C'est probablement une question mal formulée, mais je ne sais pas de meilleure façon de poser ma question.
objets "Câblage" différents à l'exécution n'est pas trivial. Il faudra recoder partout où WebServer ou BusinessLogicLayer sont construits sur la pile (ce que je reconnais ne devrait pas être beaucoup d'endroits pour ces classes). Si vous prenez la décision à un niveau élevé (par exemple dans main()), vous devez le transmettre aux classes qui en ont besoin. WebServer et BusinessLogicLayer peuvent être des choses que vous ne voulez pas avoir en même temps avec des versions réelles et bidon, ce qui signifie que vous "câlinez" des classes, pas des objets. Et si elles doivent être construites avant que main() ne s'exécute (par exemple des objets statiques) ... pas trivial. – Beta
Vous pouvez déclarer, par exemple, le serveur Web à l'aide d'une interface singleton. 'main()' est responsable de la création de l'instance de classe dérivée appropriée et de l'assignation en tant que singleton à renvoyer. Le code qui veut interagir avec le WebServer accède simplement à l'API singleton. C'est l'une des rares utilisations valables des singletons. –
Si WebServer et BusinessLogicLayer peuvent être des singletons, vous pouvez vous en sortir. Mais alors vous ne devez avoir aucun membre statique initialisé pour pointer ou se référer à eux (ce qui serait une chose naturelle à faire) * maintenant ou dans les futures révisions du code *. Aussi, toute personne qui veut construire une version de travail doit avoir le code de test aussi, sinon la liaison échouera.Et cette méthode n'est pas extensible à vos autres classes non-singleton. – Beta