Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何登录DUnitX?_Delphi_C++builder_Dunitx - Fatal编程技术网

Delphi 如何登录DUnitX?

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

使用Rad Studio 10西雅图、DUnitX和TestInsight,我需要在控制台或任何日志屏幕中显示一些文本。怎样才能做到呢?我在网上找不到它

  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;