Question

Est-il possible de mesurer la couverture de code avec DUnit? Ou sont-il des outils gratuits accomplir cela? Qu'est-ce que vous utilisez pour cela? Quelle est la couverture du code vous allez habituellement pour?

Jim McKeeth: Merci pour la réponse détaillée. Je parle des tests unitaires dans le sens d'une approche TDD, non seulement sur les tests unitaires après une panne est survenue. Je suis intéressé par la couverture de code que je peux réaliser avec quelques tests unitaires de base préconçus.

Était-ce utile?

La solution

Je viens de créer un nouveau projet open source sur Google Code avec un outil de couverture de code de base pour Delphi 2010. https://sourceforge.net/projects/delphicodecoverage/

En ce moment, il peut mesurer la couverture de la ligne, mais je prévois d'ajouter une couverture de classe et de méthode aussi.

Il génère des rapports HTML avec un résumé ainsi que balisée source que vous montrer ce que les lignes sont couvertes (vert), qui ne sont pas (rouge) et le reste des lignes qui n'ont pas de code généré pour eux.

Mise à jour: A partir de la version 0.3 de code Delphi Couverture vous pouvez générer des rapports XML compatibles avec le plugin Hudson EMMA pour afficher les tendances de la couverture de code dans Hudson .

Mise à jour: La version 0.5 apporte des corrections de bugs, une augmentation de configurabilité et nettoyé des rapports

Mise à jour: La version 1.0 apporte le support de sortie emma, la couverture des classes et des méthodes et la couverture des DLLs et BPLs

Autres conseils

Je ne connais pas d'outils gratuits. AQtime est presque la norme pour le profilage Delphi defacto. Je ne l'ai pas utilisé, mais une recherche rapide trouvé Découvrez Delphi , qui est maintenant open source, mais ne vient couverture de code.

Chacune de ces outils devrait vous donner une idée de la façon dont la couverture bien le code de vos tests unitaires deviennent.

Vous parlez de la couverture de code à partir des tests unitaires ou un code périmé? En général, je pense que le code testable qui a un défaut doit être recouvert d'un test unitaire (oui je me rends compte que peut-être commencer une guerre sainte, mais c'est là où je suis). Donc, ce serait un pourcentage assez faible.

par code rassis d'autre part est une autre histoire. le code rassis est un code qui ne soit pas utilisé. Vous avez probablement ne pas besoin d'un outil pour vous dire cela pour beaucoup de votre code, il suffit de regarder pour les petits points bleus après vous compilez à Delphes. Tout ce sans un point bleu est périmé. En général, si le code n'est pas utilisé, alors il doit être retiré. Donc, ce serait 100% de couverture de code.

Il existe d'autres scénarios pour le code rassis, comme si vous avez un code spécial pour gérer si la date se pose toujours le 31 Février. Le compilateur ne sait pas qu'il ne peut pas arriver, il compile et donne un point bleu. Maintenant, vous pouvez écrire un test unitaire pour cela, et de le tester et il pourrait fonctionner, mais vous venez de perdre votre temps une seconde fois (d'abord pour écrire le code, deuxième pour le tester).

Il existe des outils pour suivre ce que les chemins de code s'utilisés lorsque le programme fonctionne, mais c'est seulement Simi fiable car tous les chemins de code se habituent à chaque fois. Comme ce code spécial que vous devez gérer l'année bissextile, il ne fonctionnera que tous les quatre ans. Donc, si vous sortez alors votre programme sera rompu tous les quatre ans.

Je suppose que je ne l'ai pas vraiment répondre à votre question sur DUnit et la couverture du code, mais je pense que je vous ai laissé plus de questions que vous avez commencé avec. Quel genre de couverture de code que vous cherchez?

Mise à jour: Si vous prenez une approche TDD alors pas de code est écrit jusqu'à ce que vous écrivez un test pour elle, donc par nature que vous avez 100 couverture de test. Bien sûr, juste parce que chaque méthode est exercé par un test ne signifie pas que sa gamme de comportements ensemble est exercé. SmartInspect fournit une méthode très facile à mesurer que les méthodes sont appelées avec le calendrier, etc. Il est un peu moins de AQtime, mais pas libre. Avec un peu plus de travail de votre part, vous pouvez ajouter des instruments pour mesurer tous les chemins de code (branches de « si » déclarations, etc.) Bien sûr, vous pouvez aussi simplement ajouter votre propre exploitation forestière à vos méthodes pour obtenir un rapport de couverture, et qui est libre (bien, attendez-vous pour votre temps, ce qui vaut probablement plus de les outils). Si vous utilisez JEDI Debug alors vous pouvez obtenir une pile d'appel aussi.

TDD être appliqué peut vraiment pas facilement avec effet rétroactif au code existant sans beaucoup de refactoring. Bien que les plus récentes Delphi IDEs ont la capacité de générer des souches de test unitaire pour chaque méthode publique, ce qui vous donne 100% de couverture de vos méthodes publiques. Ce que vous mettez dans ces talons détermine le degré d'efficacité que la couverture est.

J'utilise Découvrez Delphi et il fait le travail, pour les tests unitaires avec DUnit et des tests fonctionnels avec TestComplete.

Découvrez peut être configuré pour exécuter à partir de la ligne de commande pour l'automatisation. Comme dans:

Discover.exe Project.dpr -s -c -m

Découvrez fonctionne très bien pour moi. Il ralentit à peine votre demande, à la différence AQtime. Ce ne peut pas être un problème pour vous de toute façon, bien sûr. Je pense que les versions récentes de AQtime réussissent mieux à cet égard.

Je me sers Découvrez » depuis des années, a travaillé très bien jusqu'au BDS2006 (qui était la dernière pré-XE * version de Delphi i utilisé et utilisent encore), mais son état opensourced actuel, on ne sait pas comment faire il fonctionne avec XE * versions de Delphi. vraiment dommage, parce que j'aimais cet outil, rapide et pratique dans presque tous les sens. Alors maintenant, je me déplace à delphi code-couverture ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top