2010-11-25 3 views
3

Pour les tests d'intégration, j'ai créé une suite de tests DUnit qui s'exécute une fois pour chaque version d'un composant tiers (un courtier de messages). Malheureusement, certains tests échouent toujours en raison de bogues connus dans certaines versions du composant testé.Comment puis-je désactiver les tests DUnit par nom par programme?

Cela signifie que les suites de tests ne seront jamais complètes avec 100%. Cependant, pour les tests automatisés, un score de réussite de 100% est requis. DUnit n'offre pas de méthode prête à l'emploi pour désactiver les tests dans une suite de tests par son nom.

Répondre

6

J'ai écrit une procédure qui prend une suite de tests et une liste de noms de tests, désactive tous les tests avec un nom correspondant, et effectue également une récursion dans des suites de tests imbriquées.

procedure DisableTests(const ATest: ITest; const AExclude: TStrings); 
var 
    I: Integer; 
begin 
    if AExclude.IndexOf(ATest.Name) <> -1 then 
    begin 
    ATest.Enabled := False; 
    end; 
    for I := 0 to ATest.Tests.Count - 1 do 
    begin 
    DisableTests(ATest.Tests[I] as ITest, AExclude); 
    end 
end; 

Exemple d'utilisation (le TStringList « A l'exclusion » est créé dans la méthode d'installation):

procedure TSuiteVersion1beta2.SetUp; 
begin 
    // fill test suite 
    inherited; 

    // exclude some tests because they will fail anyway 
    Excludes.Add('TestA'); 
    Excludes.Add('TestB'); 

    DisableTests(Self, Excludes); 
end; 
+0

+1 thx, cela me donne quelques idées nouvelles pour nos propres suites. –

+0

btw, j'aimerais voir comment vous enregistrez vos tests et comment vous obtenez une référence au composant pour chaque suite de tests spécifique dans votre test. –

+0

peut-être OpenCTF (framework de test de composants ouverts pour Delphi) donne quelques idées, il génère des suites de tests unitaires pour chaque composant et valide leurs propriétés - http://sourceforge.net/projects/openctf/ – mjn

Questions connexes