使用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
相关产品推荐
相关产品推荐

