Question

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.

Était-ce utile?

La solution

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.

Autres conseils

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

  1. FastMM4 intégration:Les tests unitaires va automatiquement détecter les fuites de mémoire (et d'autres choses), fonctionne avec DUnit 9.3 et plus récent
  2. OpenCTF est un composant de test 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:

type
  TTestNumbersAdding = class(TSynTestCase)
  published
    procedure TestIntegerAdd;
    procedure TestDoubleAdd;
  end;

procedure TTestNumbersAdding.TestDoubleAdd;
var A,B: double;
    i: integer;
begin
  for i := 1 to 1000 do
  begin
    A := Random;
    B := Random;
    CheckSame(A+B,Adding(A,B));
  end;
end;

Ensuite, vous créez un test de costume, et de l'exécuter.

Dans le à 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:

C:\Dev\lib\SQLite3\exe\TestSQL3.exe 0.0.0.0 (2011-04-13)
Host=Laptop User=MyName CPU=2*0-15-1027 OS=2.3=5.1.2600 Wow64=0 Freq=3579545
TSynLogTest 1.13 2011-04-13 05:40:25

20110413 05402559 fail  TTestLowLevelCommon(00B31D70) Low level common: TDynArray "" stack trace 0002FE0B SynCommons.TDynArray.Init (15148) 00036736 SynCommons.Test64K (18206) 0003682F SynCommons.TTestLowLevelCommon._TDynArray (18214) 000E9C94 TestSQL3 (163) 

La différence entre un test de couleur, sans journalisation et un test de la fonction de journalisation est seulement ceci:

procedure TSynTestsLogged.Failed(const msg: string; aTest: TSynTestCase);
begin
  inherited;
  with TestCase[fCurrentMethod] do
    fLogFile.Log(sllFail,'%: % "%"',
      [Ident,TestName[fCurrentMethodIndex],msg],aTest);
end;

Le mécanisme de journalisation peut faire beaucoup de connectez-vous le test:vous pouvez le journal des 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 que l' .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é:un .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.:)

Des informations supplémentaires sont 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.

Essayez: 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->Nouveau->Autres->de Test de l'Unité->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 faite, pour 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 toutes les infrastructure de test.Je ne sais pas si le test à l'appui s'est amélioré dans les versions plus récentes.

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