Les tests unitaires dans Delphi - comment faites-vous cela?
Je me demande comment les quelques Delphi utilisateurs ici sont en train de faire les tests unitaires, le cas échéant? Est-il quelque chose qui s'intègre avec l'IDE que vous avez trouvé qui fonctionne bien? Si non, quels outils utilisez-vous et avez-vous ou connaissez des exemple de mini-projets qui démontrent comment tout cela fonctionne?
Mise à jour:
J'ai oublié de mentionner que je suis en utilisant BDS 2006 Pro, mais il m'arrive parfois de tomber dans Delphi 7, et bien sûr, d'autres peuvent être en utilisant d'autres versions.
- Il n'y a pas de remplacement automatique de tests logiciels, à moins que le logiciel afin d'être testé a perdu de leur charme et il n'y a pas de développement (généralement de logiciel rapide pour les programmes de test/unités à suivre). Des programmes de Test themselfes peut contenir des bugs. J'ai moi-même écrire des mini-programmes de test pour tout ce que j'écris... il n'y a pas de remplacement pour elle. Testeur peut être une bonne sécurité de l'emploi, il ne s'en ira jamais 😉 Pour moi, le "framework de test unitaire" est totalement inutile pour autant que je suis concerné. Tout simplement appel à toutes les méthodes et marcher à travers elle à la main est le meilleur pour le débogage.
- Contrairement à ce que l' @SkybuckFlying dit ci-dessus, les tests unitaires automatisés est le fondement de vérifier correctement le logiciel. Bon les tests unitaires automatisés appliquer couplage lâche et un bon design. "J'ai moi-même écrire des mini-programmes de test pour tout ce que j'écris... il n'y a pas de remplacement pour elle." C'est exactement ce qu'est une unit test framework est-un cadre pour l'écriture de simples programmes de test qui assurent un certain morceau de code se comporte comme prévu et présente les résultats dans un cadre cohérent et automatisable façon.
- Quand je pense que des "tests", je pense "débogage". Ce que vous décrivez ressemble plus à vérifier si le code se comporte selon les modèles existants... je pense que c'est ici une différence entre... "vérification de ce qui était attendu"... et "enquête de l'inconnu". Pour moi enquêter sur l'inconnu est de débogage dans trueest forme.
- Je récuse le mot "tests unitaires automatisés". Ressemble trop à il y a un peu de magie outil permettant de générer automatiquement des programmes de test. Autant que je sache, et vous pouvez dire que vous devez écrire les programmes de test vous-même. J'ai complètement ne vois pas comment ce ou de tout cadre qui est soi-disant pour aider avec ça... Une véritable test automatisé cadre pourrait utiliser RTTI pour tester toutes sortes de variables, c'est peut-être plus vrai pour des "tests automatisés" ! 😉
Vous devez vous connecter pour publier un commentaire.
DUnit est un xUnit type de framework de test unitaire pour être utilisé avec Delphi win32. Depuis Delphi 2005 DUnit est intégré à un certan point dans l'IDE. D'autres DUnit des outils d'intégration pour le Delphi IDE peut être trouvé ici. DUnit est livré avec documentation avec des exemples.
Il y a quelques add-ons pour DUnit, peut-être que cela vaut la peine de faire une nouvelle entrée sur DONC. Deux qui, je peux le mettre sur la liste sont
cadre d'analyse basé sur DUnit, il
crée les tests de façon dynamique pour
tous les composants du projet
les formes, les cadres et les datamodules, et
des tests utilisant des règles personnalisées (open source)
Vous pouvez prendre un coup d'oeil à l'unité de tester des classes disponibles dans notre SynCommons open source unité. Il est utilisé dans notre structure Open-Source pour tous les tests de régression. C'est peut-être pas le meilleur, mais il vaut la peine de prendre un coup d'oeil.
Voir http://blog.synopse.info/post/2010/07/23/Unit-Testing-light-in-Delphi
Afin de mettre en œuvre une unité de test, vous venez de déclarer un nouveau cas de test par la création d'une classe comme ceci:
Puis vous créez un test de costume, et de l'exécuter.
Dans l'à-venir 1.13 version, il y a également un nouveau mécanisme de journalisation avec trace de la pile du tout ont soulevé l'exception et de la sorte, tout comme MadExcept, à l'aide de .carte contenu du fichier source.
Il est maintenant utilisé par l'unité de tester des classes, ainsi que le non va créer une entrée dans le journal avec la ligne de source, et la trace de la pile:
La différence entre un test de couleur, sans journalisation et un test de la fonction de journalisation est seulement ceci:
Le mécanisme de journalisation peut faire beaucoup de connectez-vous le test: vous pouvez vous connecter appels récursifs de méthodes, sélectionnez les informations que vous souhaitez voir apparaître dans les journaux, le profil de la demande du côté des clients, la rédaction publié propriétés, TList ou TCollection contenu JSON dans le contenu du journal, et ainsi de suite...
La première fois de la .carte fichier est lu, un .mab fichier est créé et contiendra toutes les informations sur les symboles nécessaires. Vous pouvez envoyer le .mab fichier avec l' .exe à votre client, ou même intégrer son contenu dans l' .exe. C' .mab fichier est optimisé: une .carte de 927,984 octets compresse dans un 71,943 .mab fichier.
Donc cette unité pourrait être reconnu comme l'enfant naturel de DUnit et MadExcept de mariage, dans le plus pur OpenSource. 🙂
De l'information supplémentaire est disponible sur notre forum. N'hésitez pas à demander. Commentaires et demandes de fonctionnalités sont les bienvenus! Fonctionne à partir de Delphi 6 jusqu'au XE.
DUnit2 est disponible à partir de http://members.optusnet.com.au/~mcnabp/
DUnit2 est modifié plus régulièrement que l'original dunit. Il travaille également sur Delphi 2009.
Essayer: http://sourceforge.net/projects/dunit2/ - il déplacé que l'auteur original de Peter McNab est décédé il y a plusieurs années. Encore un peu d'activité sur le dunit liste de diffusion.
Il y a un nouveau framework de test unitaire pour les modernes versions de Delphi dans le développement: https://github.com/VSoftTechnologies/DUnitX
Habituellement, je créer un projet de test d'Unité (Fichier->New->Autre->Unité de Test->Projet de Test). Il contient les trucs que j'ai besoin de sorte qu'il a été assez bon jusqu'à présent.
J'utilise delphi 2007 donc je ne sais pas vraiment si c'est disponible en 2006.
Nous faisons les tests unitaires de l'ensemble de la logique de code à l'aide de DUnit et utiliser le code générateur de profils de couverture inclus dans AQTime pour vérifier que tous les chemins à travers le code exécutés par les tests.
Nous avons deux approches, nous avons d'abord Dunit tests qui sont exécutés acheter les développeurs eux, assurez-vous que le code qui vient d'être modifié fonctionne toujours comme avant. L'autre approche est d'utiliser CruiseControl.NET pour construire des exécutables et puis exécutez le dunit tests à chaque fois qu'une modification est effectuée, afin de s'assurer qu'il n'y a pas de conséquences imprévues de la modification.
Une grande partie de notre base de code n'a pas de tests, de sorte que les tests automatiques sont un cas de développement continu afin de s'assurer que nos applications fonctionnent comme nous pensons qu'ils devraient.
Nous avons essayé d'utiliser DUnit avec Delphi 5, mais il ne fonctionne pas bien. Spécialement si vous êtes à la mise en œuvre des interfaces COM, nous avons trouvé de nombreuses dépendances d'installation de toute l'infrastructure de test. Je ne sais pas si le test à l'appui s'est amélioré dans les versions plus récentes.