2012-03-06 40 views

回答

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

先写一个新的程序

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

相关问题