您可以使用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相同的行为,您可以在输出部分记录自定义消息。
有什么更好的点子?
先写一个新的程序
procedure Log(text: string);
begin
LogStringList.Add(text);
Status(text);
end;
替换所有status()
到Log()
。并创建一个新的测试在人的最后测试
procedure TestXXX.ShowLog;
begin
Status(LogStringList.Text);
LogStringList.Clear;
end;
你有你的测试单元的初始化块创建LogStringList: TStringList
。