Question
Actuellement, j'utilise une hiérarchie de test à 2 niveaux dans DUnit (Test Project -> Test Case -> Test method; voir exemple ci-dessous).Est-il possible d'introduire le 3e niveau ou même plus de niveaux?
La solution
Vous pouvez utiliser des suites de tests pour créer autant de niveaux d'imbrication que vous le souhaitez. La documentation offre l'exemple suivant:
L'unité
TestFramework
expose la classeTTestSuite
, la classe qui implémente des suites de tests afin que vous puissiez créer des hiérarchies de test en utilisant plus code explicite:La fonction suivante,
UnitTests
, crée une suite de tests et ajoute le deux classes de test:function UnitTests: ITestSuite; var ATestSuite: TTestSuite; begin ATestSuite := TTestSuite.create('Some trivial tests'); ATestSuite.addTest(TTestArithmetic.Suite); ATestSuite.addTest(TTestStringlist.Suite); Result := ATestSuite; end;
Une autre façon d'implémenter la fonction ci-dessus serait:
function UnitTests: ITestSuite; begin Result := TTestSuite.Create( 'Some trivial tests', [TTestArithmetic.Suite, TTestStringlist.Suite] ); end;
Dans l'exemple ci-dessus, le constructeur
TTestSuite
ajoute les tests du tableau passé au suite.Vous pouvez enregistrer une suite de tests créée de l'une des manières ci-dessus en en utilisant le même appel que vous utilisez pour enregistrer des cas de test individuels:
initialization RegisterTest('Simple Test', UnitTests); end.
Lorsqu'il est exécuté avec
GUITestRunner
, vous verrez la nouvelle hiérarchie.
Autres conseils
Je construis une hiérarchie en mettant des contre-obliques dans le `SuitePath '.Par exemple:
initialization
RegisterTests('Group1\Group2', [TExampleTests1.Suite,
TExampleTests2.Suite]);
RegisterTests('Group1\Group3', [TExampleTests3.Suite,
TExampleTests4.Suite]);
end.
À la fin, j'obtiens quelque chose comme ça:
Beaucoup moins de farce qu'avec la manière de David, et vous pouvez répartir vos définitions de groupe sur des unités disparates.
Vous pouvez regrouper les tests associés dans des suites de tests, qui peuvent être imbriquées.
Si vous souhaitez le faire au moment de l'exécution, consultez mon "Open Component Test Framework (OpenCTF)" à sourceforge .