Le développement piloté par les tests implique d' écrire le test avant le code et après un certain cycle :
- Test d'écriture
- Vérifier le test (exécuter)
- Écrire le code de production
- Vérifier le test (exécuter)
- Nettoyer le code de production
- Vérifier le test (exécuter)
En ce qui me concerne, cela n'est possible que si votre solution de développement vous permet de basculer très rapidement entre le code de production et de test, et d'exécuter le test pour une certaine partie du code de production extrêmement rapidement.
Maintenant, bien qu'il existe de nombreux cadres de tests unitaires pour C ++ (j'utilise Bost.Test atm.), Il semble qu'il n'existe pas vraiment de solution décente (pour C ++ natif ) Visual Studio (Plugin) qui rend le TDD cycle supportable quel que soit le cadre utilisé.
"Bearable" signifie que c'est une action en un clic pour exécuter un test pour un certain fichier cpp sans avoir à configurer manuellement un projet de test séparé, etc. "Bearable" signifie également qu'un test simple démarre (liaison!) Et s'exécute très rapidement .
Alors, quels outils (plugins) et techniques existent pour rendre le cycle TDD possible pour le développement natif C ++ avec Visual Studio?
Remarque: je vais bien avec des outils gratuits ou "commerciaux".
Veuillez : Aucune recommandation-cadre. (Sauf si le framework dispose d'un plugin Visual Studio dédié et que vous souhaitez recommander le plugin.)
Modifier la note : jusqu'à présent, les réponses ont fourni des liens sur la façon d'intégrer un framework de tests unitaires dans Visual Studio. Les ressources décrivent plus ou moins comment obtenir le framework UT à compiler et lancer vos premiers tests. Ce n'est pas de cela qu'il s'agit. Je suis d'avis que pour vraiment travailler de manière productive, ayant les tests unitaires dans un manuel (!), Vcproj séparé de vos classes de production ajoutera tellement de frais généraux que TDD "n'est pas possible". Pour autant que je sache, vous n'ajoutez pas de "projets" supplémentaires à une chose Java ou C # pour activer les tests unitaires et TDD, et pour une bonne raison. Cela devrait être possible avec C ++ avec les bons outils, mais il semble (cette question concerne) qu'il existe très peu d'outils pour TDD / C ++ / VS.
Googler autour, j'ai trouvé un outil, VisualAssert , qui semble viser dans la bonne direction. Cependant, afaiks, il ne semble pas être largement utilisé (par rapport à CppUnit, Boost.Test, etc.).
Edit: Je voudrais ajouter un commentaire au contexte de cette question. Je pense que cela résume bien (en partie) le problème: (commentaire de Billy ONeal )
Visual Studio n'utilise pas de "scripts de construction" qui sont raisonnablement modifiables par l'utilisateur. Un projet produit un binaire. De plus, Java a la propriété que Java ne construit jamais un binaire complet - le binaire que vous construisez n'est qu'un ZIP des fichiers de classe. Il est donc possible de compiler séparément puis de JAR ensemble manuellement (en utilisant par exemple 7z). C ++ et C # lient tous les deux leurs binaires, donc en règle générale vous ne pouvez pas écrire un script comme ça. Le plus proche que vous pouvez obtenir est de tout compiler séparément, puis de faire deux liaisons (une pour la production, une pour les tests).
7z
). C ++ et C # lient tous les deux leurs binaires, donc en règle générale vous ne pouvez pas écrire un script comme ça. Le plus proche que vous pouvez obtenir est de tout compiler séparément, puis de faire deux liaisons (une pour la production, une pour les tests).
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- Je ne pense pas que ce soit correct. Vous avez généralement plusieurs projets en C # également; vous ne voulez pas envoyer votre code de test dans votre binaire de production.