Sign in Join
Wiki copytemporary

FPTest/fr

English · Français · Polski

FPTest (Free Pascal Testing Framework) est un framework de test d'unité. C'est une branche (fork) du projet DUnit2 créé par feu Peter McNab, mais adapté spécialement pour l'utilisation avec le compilateur Free Pascal.

La plupart des articles listés ci-dessous sont relatifs au projet DUnit2 original (et maintenant le projet FPTest) et comment il diffère du projet DUnit. L'information sur la migration depuis fpcunit est aussi présentée.

Caractéristiques

Objectifs de conception utilisés lors du développement du projet, pas nécessairement dans un ordre particulier :

Etat actuel

Pour faciliter les tests précoces sans reconstruire complètement GUITestsRunner et TextTestRunner, une unité proxy intermédiaire et un remplacement des TTestResults ont été intercalés entre l'interface graphique et le nouveau framework de test. Bien que l'objectif initial était éventuellement de repenser complètement l'interface graphique, les classes "Proxy" fonctionnent très bien et peuvent ne pas nécessiter de travail supplémentaire.

Obtenir le code source

Le code source est librement accessible depuis GitHub en utilisant la commande suivante :

bash
git clone git://github.com/graemeg/fptest.git

ou

bash
git clone https://github.com/graemeg/fptest.git

Si vous n'avez pas installé Git, vous pouvez aussi récupérer une archive tarball du code source, en utilisant l'URL suivante.

text
https://github.com/graemeg/fptest/tarball/master

Le projet FPTest est en développement actif, ainsi le code et la documentation sont constamment améliorés. Pour cette raison, je vous recommande hautement de récupérer le code source via Git au lieu de l'archive tarball.

Documentation

La documentation eut être trouvée dans le répertoire docs en fichiers HTML.

Exemple de test

Voici un échantillon de projet de test en console.

pascal
program project1;

{$mode objfpc}{$H+}

uses
 Classes,
 TextTestRunner,
 sample_tests;

begin
 // Register all tests
 sample_tests.RegisterTests;

 RunRegisteredTests;
end.

et l'unité contenant les tests actuels ...

pascal
unit sample_tests;

{$mode objfpc}{$H+}

interface

uses
 TestFramework;  // required for TTestCase and CheckXXX() references

type
 TTestCaseFirst = class(TTestCase)
 published
   procedure TestWarning;
   procedure TestOne;
   procedure TestNoError;
   procedure TestThree;
   procedure TestFour;
 end;

procedure RegisterTests;

implementation

uses
  SysUtils;

{ here we register all our test classes }
procedure RegisterTests;
begin
  TestFramework.RegisterTest(TTestCaseFirst.Suite);
end;

{ TTestCaseFirst }

procedure TTestCaseFirst.TestWarning;
begin
  // Do nothing here - should cause a Warning
end;

procedure TTestCaseFirst.TestOne;
begin
  Check(1 + 1 = 3, 'Catastrophic arithmetic failure!');
end;

procedure TTestCaseFirst.TestNoError;
begin
  Check(1 + 1 = 2, 'Catastrophic arithmetic failure!');
end;

procedure TTestCaseFirst.TestThree;
var
  s: string;
begin
  s := 'hello';
  CheckEquals('Hello', s, 'Failed CheckEquals');
end;

procedure TTestCaseFirst.TestFour;
var
  x, y: integer;
begin
  x := 10;
  y := 0;
  Check(x / y = 0, 'Failed on 1');
end;

end.

Captures d'écran

Voici une captuire d'écran d'une sortie du Test Runner en mode texte.

Voici une capture d'écran du Test Runner avec IHM (utilisant le Toolkit fpGUI) pour exécuter la suite de tests tiOPF.

Comment le comparer à FPCUnit?

J'ai (Graeme Geldenhuys) été un utilisateur de longue date de FPCUnit. J'ai contribué à l'extension du projet FPCUnit. Mais FPCUnit a quelques défauts de conception qui le rendent plus utiles pour les projets plus petits et des suites de tests moins compliquées. Les décorateurs de test de FPCUnit, Setup/Teardown etc sont sévèrement délabrés. Le framework de test surmonte tous ces problèmes, ajoute de nouvelles fonctionnalités, il est plus facile de gérer vos tests, et les exécute plus rapidement que des projets équivalents FPCUnit ou Dunit.

La bonne nouvelle est vous n'êtes pas forcés de choisir entre les frameworks de test. Il y plusieurs années, j'ai inclus une interface de compatibilité DUnit/FPTest à FPCUnit. Ce qui vous donne un bon chemin de mise à jour de FPCUnit vers FPTest. Donc si vous concevez votre suite de test en utilisant des appels CheckXXX() (au lieu des appels AssertXXX()), vous pourrez plus tard basculer facilement vers le framework FPTest sans avoir besoin de changer votre code de test.

Voir aussi


From the Free Pascal wiki, page "FPTest/fr", as it stood on 2020-02-16 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.