名前でプログラムでダニットテストを無効にするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4279127

  •  28-09-2019
  •  | 
  •  

質問

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

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

役に立ちましたか?

解決

テストスイートとテスト名のリストを撮影し、一致する名前ですべてのテストを無効にし、ネストされたテストスイートへの再帰を実行する手順を書きました。

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「除外」は、セットアップ方法で作成されます):

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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top