Domanda

Per i test di integrazione, ho creato una suite di test dunit che viene eseguito una volta per ogni versione di un componente di terze parti (un broker di messaggio). Purtroppo, alcuni test falliscono sempre a causa dei bug conosciuti in alcune versioni del componente testato.

Ciò significa che la suite di test non potrà mai completare con il 100%. Per i test automatizzati, tuttavia, è richiesto un punteggio di successo del 100%. Dunit non offre un metodo di ready-made a test disattivare in una suite di test per nome.

È stato utile?

Soluzione

ho scritto una procedura che richiede una suite di test e una lista di nomi di test, disabilita tutte le prove con un nome corrispondente, e anche esegue una ricorsione in suite di test nidificate.

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;

Esempio di utilizzo (il TStringList ‘Esclude’ è stato creato nel metodo di installazione):

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top