2012-03-06 6 views
4

TAbstractTest.Status手順を使用すると、テスト中にDUnit GUIにデバッグメッセージを表示できます。DUnit GUIのステータスメッセージをすべてのテストケースから一度に見る方法は?

しかし、テストのグループを実行すると、最後に実行されたテストのステータスメッセージしか表示されません。実行する単一のテストを選択せず​​に完全なログを何とか見ることはできますか?

答えて

2

DUnitのソースコードは、IStatusListenerインターフェイスとあなたのテストクラスに新しい実装を使用するためにオーバーライドすることができ、公開方法

procedure TAbstractTest.SetStatusListener(Listener: IStatusListener); 

を使用しています。私はそれを試していないが、それは最もクリーンな解決策かもしれない。値は、障害が発生したが出力されます

2

私が使用している状態()メソッドは:

procedure Test.TestGetStringListQueryValuesException; 
var 
    ReturnValue: TList<String>; 
    item: String; 
begin 
    ReturnValue := FTest.GetStringListQueryValues; 
    try 
    for item in ReturnValue do 
    begin 
     Status('Value Processed: ' + item); 
     CheckTrue(Pos('B', item) > 0, 'Wrong Value, Expected Item containing ''B'' but found: ' + item); 
    end; 
    finally 
    ReturnValue.Free; 
    end; 
end; 

その結果は、このようなsomethigです:

TestGetIntegerListQueryValuesException: ETestFailure 
at $0050B842 
Wrong Value, Expected > 50 and < 60 but found: 61, expected: <True> but was: <False> 

Status Messages 
Value Processed: 52 
Value Processed: 54 
Value Processed: 55 
Value Processed: 58 
Value Processed: 59 
Value Processed: 61 

識別するのに本当に便利ですテスト中に何が問題になったか。 私はSetStatusListener()を試していませんが、テストが成功したときにログを表示したい場合は、正しい方法でなければならないと思います。

出力セクションにカスタマイズされたメッセージを記録できるNunitと同じ動作を模倣したいと思います。

もっと良いアイデアを教えてください。

0

まず、すべてのstatus()Log()にに取って代わる新しい手順

procedure Log(text: string); 
    begin 
     LogStringList.Add(text); 
     Status(text); 
    end; 

を書きます。そして、Alの最後に新しいテストを作成するには

procedure TestXXX.ShowLog; 
    begin 
     Status(LogStringList.Text); 
     LogStringList.Clear; 
    end; 

をテストし、あなたのテスト・ユニットの初期化ブロックでLogStringList: TStringListを作成する必要があります。

関連する問題