Question

Pour les tests d'intégration, je créé une suite de tests de DUnit qui fonctionne une fois pour chaque version d'un composant tiers (un courtier de messages). Malheureusement, certains tests échouent toujours à cause de bugs connus dans certaines versions du composant testé.

Cela signifie que les suites de test ne sera jamais complet avec 100%. Pour les tests automatisés cependant, un score de réussite de 100% est nécessaire. DUnit ne propose pas une méthode prête à l'emploi à des tests dans une suite désactiver test par nom.

Était-ce utile?

La solution

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

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 « exclusion de » est créé dans le procédé 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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top