Présentation de DUnitX

De RAD Studio
Aller à : navigation, rechercher

Remonter à Test des applications - Index

Remarque: DUnitX utilise des fonctionnalités du langage Delphi qui ne sont pas prises en charge dans C++. Pour les développeurs C++, DUnit est l'outil le plus adapté. C++ peut aussi être testé avec d'autres frameworks comme Google Test, disponible via le Gestionnaire de packages GetIt.

DUnitX est un framework de test unitaire open-source basé sur le framework de test NUnit, incluant également certains concepts de xUnit. L'intégration du framework DUnitX dans RAD Studio vous permet de développer et d'exécuter des tests pour Win32, Win 64, macOS et Linux dans les applications Delphi.

Chaque framework de test DunitX propose son propre ensemble de méthodes pour les conditions de test. Vous pouvez utiliser les méthodes proposées pour tester un grand nombre de conditions. Ces méthodes représentent des assertions communes bien que vous puissiez créer vos propres assertions personnalisées.

DUnitX utilise les méthodes génériques et anonymes. DUnitX utilise des attributs sous la personnalité Delphi.

Voir également la page d'accueil de DUnitX à l'adresse https://github.com/VSoftTechnologies/DUnitX/wiki (EN).

Développement de tests DUnitX Delphi

L'exemple suivant de programme Delphi définit deux fonctions qui effectuent de simples additions et soustractions :

 
unit CalcUnit;
 
interface
 
type
 
 { TCalc }
 
   TCalc = class
   public
     function Add(x, y: Integer): Integer;
     function Sub(x, y: Integer): Integer;
   end;
 
 implementation
 
 { TCalc }
 
 function TCalc.Add(x, y: Integer): Integer;
 begin
   Result := x + y;
 end;
 
 function TCalc.Sub(X, Y: Integer): Integer;
 begin
   Result := x - y;
 end;
 
 end.

L'exemple suivant montre l'unité de test que vous devez modifier pour tester les deux fonctions. Vous devez ajouter du code aux méthodes SetUp et TearDown ainsi qu'aux méthodes de test TestAdd et TestSub. Enfin, utilisez des attributs pour tester les fonctions.

 
unit TestCalcUnit;

interface
uses
  DUnitX.TestFramework, CalcUnit;

type

  [TestFixture]
  TestTCalc = class(TObject)
  strict private
    aTCalc: TCalc;
  public
    [Setup]
    procedure Setup;
    [TearDown]
    procedure TearDown;
    // Sample Methods
    // Test with TestCase Atribute to supply parameters.
    [TestCase('TestA','8,2,10')]
    procedure TestAdd(Value1, Value2, _Result: Integer);
    // Test with TestCase Atribute to supply parameters.
    [TestCase('TestB','3,4,-1')]
    procedure TestSub(Value1, Value2, _Result: Integer);
  end;

implementation

procedure TestTCalc.Setup;
begin
  aTCalc := TCalc.Create;
end;

procedure TestTCalc.TearDown;
begin
  aTCalc := nil;
end;

procedure TestTCalc.TestAdd(Value1, Value2, _Result: Integer);
var
  R: Integer;
begin
  R := aTCalc.Add(Value1, Value2);
  Assert.AreEqual(R, _Result);   // testcode
end;

procedure TestTCalc.TestSub(Value1, Value2, _Result: Integer);
var
  R: Integer;
begin
  R := aTCalc.Sub(Value1, Value2);
  Assert.AreEqual(R, _Result);  // testcode
 end;

initialization
  TDUnitX.RegisterTestFixture(TestTCalc);
end.

Fonctions DUnitX

DUnitX fournit une classe Assert avec un nombre de fonctions que vous pouvez utiliser dans vos tests.

Le tableau présente certaines de ces fonctions.

Fonction Description

Pass

Vérifie si une routine fonctionne.

Fail

Vérifie si une routine échoue.

AreEqual

Vérifie si les éléments sont égaux.

AreNotEqual

Vérifie si les éléments ne sont pas égaux.

AreSame

Vérifie si deux éléments ont la même valeur.

AreNotSame

Vérifie si deux éléments n'ont pas la même valeur.

Contains

Vérifie si l'élément est dans une liste.

DoesNotContain

Vérifie si l'élément n'est pas dans une liste.

IsTrue

Vérifie si une condition est vraie.

IsFalse

Vérifie si une condition est fausse.

IsEmpty

Vérifie si la valeur d'un élément est vide.

IsNotEmpty

Vérifie si la valeur d'un élément n'est pas vide.

IsNull

Vérifie si un élément est null.

IsNotNull

Vérifie si un élément n'est pas null.

WillRaise

Vérifie si la méthode déclenchera une exception.

StartsWith

Vérifie si une chaîne débute avec une sous-chaîne spécifiée.

InheritsFrom

Vérifie si une classe est descendante d'une classe spécifiée.

IsMatch

Vérifie si l'élément correspond à un modèle spécifié.

Pour plus d'informations sur la syntaxe et l'utilisation de ces fonctions et des autres fonctions DUnitX, voir les fichiers d'aide DUnitX dans \source\DUnitX.

Lanceurs de tests DUnitX

Un lanceur de test vous permet d'exécuter vos tests indépendamment de votre application. Dans un projet test DUnitX, le code du lanceur de test du framework DUnitX est directement compilé dans l'exécutable généré, transformant ainsi le projet test lui-même en lanceur de test. Le framework DUnitX intégré fournit deux lanceurs de tests :

  • Le lanceur de test Console :
    • Envoie toutes les sorties de test vers la console. C'est le mode de test par défaut lorsque vous exécutez votre projet DUnitX. Le framework DUnitX fournit la classe TDUnitXConsoleLogger pour envoyer les sorties de test vers la console.
    • Est utile lorsque vous voulez exécuter du code achevé et des tests à partir de scripts construits de manière automatisée.
  • Le lanceur de test en mode GUI :
    • Affiche interactivement les résultats des tests dans une fenêtre graphique. Le framework DUnitX fournit une classe TGUIXTestRunner pour générer les sorties de la GUI de FireMonkey et une classe TDUnitXGuiLoggerForm pour la GUI de la VCL.
    • Est très utile pour développer de manière interactive les tests unitaires pour le code testé.

Voir aussi