2010-11-25 14 views
3

統合テストでは、サードパーティコンポーネント(メッセージブローカー)のすべてのバージョンで1回実行されるDUnitテストスイートを作成しました。残念なことに、一部のテストでは、テストされたコンポーネントの一部のバージョンで既知のバグがあるため、常に失敗します。DUnitテストを名前でプログラムで無効にする方法を教えてください。

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

答えて

6

テストスイートとテスト名のリストを取得し、一致する名前のすべてのテストを無効にし、ネストされたテストスイートを再帰的に実行するプロシージャを作成しました。

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; 
+0

1 THX、これは私たち自身のスイートのためのいくつかの新しいアイデアを提供します。 –

+0

btw、私はあなたのテストを登録する方法と、テストケース内の特定のテストスイートごとにコンポーネントへの参照を取得する方法を見てみたいと思います。 –

+0

多分OpenCTF(Delphi用のオープンコンポーネントテストフレームワーク)はいくつかのアイデアを提供し、すべての単一コンポーネントのユニットテストのスイートを生成し、そのプロパティを検証します - http://sourceforge.net/projects/openctf/ – mjn

関連する問題