TAbstractTest.Status
手順を使用すると、テスト中にDUnit GUIにデバッグメッセージを表示できます。DUnit GUIのステータスメッセージをすべてのテストケースから一度に見る方法は?
しかし、テストのグループを実行すると、最後に実行されたテストのステータスメッセージしか表示されません。実行する単一のテストを選択せずに完全なログを何とか見ることはできますか?
TAbstractTest.Status
手順を使用すると、テスト中にDUnit GUIにデバッグメッセージを表示できます。DUnit GUIのステータスメッセージをすべてのテストケースから一度に見る方法は?
しかし、テストのグループを実行すると、最後に実行されたテストのステータスメッセージしか表示されません。実行する単一のテストを選択せずに完全なログを何とか見ることはできますか?
DUnitのソースコードは、IStatusListenerインターフェイスとあなたのテストクラスに新しい実装を使用するためにオーバーライドすることができ、公開方法
procedure TAbstractTest.SetStatusListener(Listener: IStatusListener);
を使用しています。私はそれを試していないが、それは最もクリーンな解決策かもしれない。値は、障害が発生したが出力されます
私が使用している状態()メソッドは:
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と同じ動作を模倣したいと思います。
もっと良いアイデアを教えてください。
まず、すべての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
を作成する必要があります。