Frage

Für die Integration Tests habe ich eine DUnit-Testsuite, die für jede Version eines Dritten Komponente wird einmal (ein Message Broker). Leider immer einige Tests aufgrund von bekannten Fehlern nicht in einigen Versionen der getesteten Komponente.

Das heißt, die Testsuiten werden nie mit 100% abzuschließen. jedoch für automatisierte Tests, ein 100% ige Erfolg Punktzahl erforderlich. DUnit bietet keine fertige Methode zu deaktivieren Tests in einer Testsuite mit Namen.

War es hilfreich?

Lösung

Ich schrieb ein Verfahren, das eine Testsuite und eine Liste der Testnamen nimmt, deaktiviert alle Tests mit einem passenden Namen, und führt auch eine Rekursion in verschachtelte Testsuiten.

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;

Beispiel für die Verwendung (der TStringList ‚Ausgeschlossen‘ wird im Setup-Methode erstellt):

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top