4

統合テストのために、サードパーティ コンポーネント (メッセージ ブローカー) のすべてのバージョンに対して 1 回実行される DUnit テスト スイートを作成しました。残念ながら、テスト対象のコンポーネントの一部のバージョンに既知のバグがあるため、一部のテストは常に失敗します。

これは、テスト スイートが 100% で完了することは決してないことを意味します。ただし、自動テストの場合は、100% の成功スコアが必要です。DUnit は、テスト スイート内のテストを名前で無効にする既製の方法を提供していません。

4

1 に答える 1

7

テスト スイートとテスト名のリストを取得し、一致する名前を持つすべてのテストを無効にし、ネストされたテスト スイートへの再帰も実行する手順を作成しました。

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;

使用例 (TStringlist 'Excludes' は Setup メソッドで作成されます):

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;
于 2010-11-25T16:32:18.583 に答える