You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TDUnitX.CurrentRunner.Log无输出,求教DUnitX控制台打印方法

如何在DUnitX控制台测试中输出日志内容?

我不确定如何使用DUnitX在控制台窗口输出字符串,为此我做了如下尝试:

unit Unit1;
interface
uses DUnitX.TestFramework;
type
[TestFixture]
TMyTestObject = class(TObject)
public
// Sample Methods
// Simple single Test
// Test with TestCase Attribute to supply parameters.
[Test]
[TestCase('TestA','1,2,3')]
[TestCase('TestB','3,4,7')]
procedure Test1(AValue1, AValue2, _Result : Integer);
end;
procedure TMyTestObject.Test1(AValue1, AValue2, _Result: Integer);
begin
TDUnitX.CurrentRunner.Log(TLogLevel.Information, 'Information');
end;
initialization
TDUnitX.RegisterTestFixture(TMyTestObject);
end.

但没有任何内容被打印出来,请问正确的写法应该是怎样的?

你遇到的问题是因为TDUnitX.CurrentRunner.Log并不是DUnitX测试方法中输出日志的标准用法,默认的控制台运行器也不会自动捕获这个调用的输出。下面给你两种靠谱的解决方法:

方法1:用测试上下文的Log方法(推荐)

这是DUnitX官方推荐的日志输出方式,测试上下文会自动把日志传递给当前的运行器,控制台运行器默认就会输出这些日志内容:

procedure TMyTestObject.Test1(AValue1, AValue2, _Result: Integer);
begin
  // 通过测试上下文输出日志
  TTestContext.Current.Log(TLogLevel.Information, '这条信息会在控制台显示啦');
end;

方法2:直接用原生控制台输出(简单快捷)

如果只是想快速在控制台打印内容,完全可以直接用Delphi原生的Writeln,这种方式不受DUnitX的日志配置限制:

procedure TMyTestObject.Test1(AValue1, AValue2, _Result: Integer);
begin
  Writeln('直接输出到控制台的内容');
end;

额外提醒

要是用方法1还是看不到日志,你可以检查下这两点:

  • 默认情况下控制台运行器会输出Information及以上级别的日志,但如果自定义过运行器配置,要确保TLogLevel.Information被包含在输出级别里。
  • 也可以在启动测试时加命令行参数调整日志级别,比如--log-level=info,强制输出信息级别的日志。

内容的提问来源于stack exchange,提问作者zac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:35:37