Delphi 如何登录DUnitX?
使用Rad Studio 10西雅图、DUnitX和TestInsight,我需要在控制台或任何日志屏幕中显示一些文本。怎样才能做到呢?我在网上找不到它Delphi 如何登录DUnitX?,delphi,c++builder,dunitx,Delphi,C++builder,Dunitx,使用Rad Studio 10西雅图、DUnitX和TestInsight,我需要在控制台或任何日志屏幕中显示一些文本。怎样才能做到呢?我在网上找不到它 procedure CreateRunner; var fn : TFileName; begin runner := TDUnitX.CreateRunner; runner.UseRTTI := True; fn := IncludeTrailingPathDelimiter(ExtractFilePa
procedure CreateRunner;
var fn : TFileName;
begin
runner := TDUnitX.CreateRunner;
runner.UseRTTI := True;
fn := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'dUnitX.Log';
ConsoleLogger := TDUnitXConsoleLogger.Create(false);
TextFileLogger:= TDUnitXTextFileLogger.Create(fn);
nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile);
runner.AddLogger(ConsoleLogger );
runner.AddLogger(TextFileLogger);
runner.AddLogger(nunitLogger);
end;
下面是如何添加日志消息、从中复制的片段
如果希望语法不那么复杂,可以像这样为Assert
类添加一个插入器
Assert = class(DUnitX.Assert.Assert) //Or (DunitX.Assert.Ex.Assert)
public
class procedure Log(const message: string);
end;
class procedure Assert.Log(const message: string);
begin
TDUnitX.CurrentRunner.Log(TLogLevel.Information, message);
end;
var
参赛者:ITestRunner;
记录器:ITestLogger;
开始
尝试
//创建跑步者
runner:=TDUnitX.CreateRunner;
runner.UseRTTI:=True;
//告诉跑步者我们将如何记录事情
如果TDUnitX.Options.ConsoleMode TDunitXConsoleMode.Off,则
开始
记录器:=TDUnitXConsoleLogger.Create(TDUnitX.Options.ConsoleMode=TDunitXConsoleMode.Quiet);
runner.AddLogger(记录器);
结束;
//运行测试
结果:=runner.Execute;
System.Write('完成..按键退出');
系统Readln;
除了
关于E:Exception-do
System.Writeln(E.ClassName,':',E.Message);
结束;
?哦,谢谢。我正在寻找DUnitX的一个特定函数,如TDUnitX.CurrentRunner.Log或类似的函数,但我没有意识到我可以直接使用outputDebutStrings。我对DUnitX不太了解,但似乎TDUnitX.CurrentRunner.Log
或TDUnitX.CurrentRunner.Status
会起作用,请看在TDUnitXConsoleLogger.Create(false)中使用false的DUnitX示例;这是必要的。该布尔值确定日志记录是否安静。如果它是安静的,您不会看到太多……。一旦您创建了记录器,您需要在测试中调用Log函数:Assert.Log('logging something')。我认为这是显而易见的,但在现实中是缺失的answer@Rub就我所知,Assert.Log
并不存在。请参阅:日志在DUnitX.TestFramework.TTestFixtureHelper中实现:
Assert = class(DUnitX.Assert.Assert) //Or (DunitX.Assert.Ex.Assert)
public
class procedure Log(const message: string);
end;
class procedure Assert.Log(const message: string);
begin
TDUnitX.CurrentRunner.Log(TLogLevel.Information, message);
end;
var
runner : ITestRunner;
logger : ITestLogger;
begin
try
//Create the runner
runner := TDUnitX.CreateRunner;
runner.UseRTTI := True;
//tell the runner how we will log things
if TDUnitX.Options.ConsoleMode <> TDunitXConsoleMode.Off then
begin
logger := TDUnitXConsoleLogger.Create(TDUnitX.Options.ConsoleMode = TDunitXConsoleMode.Quiet);
runner.AddLogger(logger);
end;
//Run tests
results := runner.Execute;
System.Write('Done.. press <Enter> key to quit.');
System.Readln;
except
on E: Exception do
System.Writeln(E.ClassName, ': ', E.Message);
end;