Delphi DunitX,如何获取当前正在运行的测试的名称?
如何获取当前在DunitX中运行的测试的名称 例如:Delphi DunitX,如何获取当前正在运行的测试的名称?,delphi,testing,dunitx,Delphi,Testing,Dunitx,如何获取当前在DunitX中运行的测试的名称 例如: procedure TestModule.TestProcedure; begin Assert.Pass('This tests name is ' + TestName); end 您需要创建ITestLogger的实例,并将其添加到当前运行程序: TDUnitX.CurrentRunner().AddLogger(myLogger); ITestLogger有很多方法可以读取大量详细信息。DUnitX附带了多种记录器,但这里没有
procedure TestModule.TestProcedure;
begin
Assert.Pass('This tests name is ' + TestName);
end
您需要创建
ITestLogger
的实例,并将其添加到当前运行程序:
TDUnitX.CurrentRunner().AddLogger(myLogger);
ITestLogger
有很多方法可以读取大量详细信息。DUnitX附带了多种记录器,但这里没有任何东西真正适合我们的用例
我建议
TDUnitXNullLogger
fromDUnitX.Loggers.Null
过程OnBeginTest(const-threadId:tthrreadId;const-Test:ITestInfo)代码>
Test.MethodName
以供以后使用SetUpFixture
方法中创建新类的实例
警告:您可以将记录器添加到TDUnitX.CurrentRunner()
,但我没有找到在不再需要时将其删除的公共方法
以下是完整的示例:
单元1;
接口使用DUnitX.TestFramework;
类型
[测试夹具]
TMyTest=类
私有变量
myLogger:ITestLogger;
受保护的
函数getCurrentTestName():字符串;
公众的
[SetupFixture]程序SetupFixture();
[Test]过程TestName();
结束;
实现使用DUnitX.Loggers.Null;
类型
TMyLogger=class(TDUnitXNullLogger)
保护程序OnBeginTest(
const threadId:tthrreadid;
常数测试:ITestInfo
); 推翻
公共var testInfo:ITestInfo;
结束;
函数TMyTest.getCurrentTestName():字符串;
开始
结果:=TMyLogger(myLogger).testInfo.MethodName;
结束;
程序TMyTest.SetupFixture();
开始
myLogger:=TMyLogger.Create();
TDUnitX.CurrentRunner().AddLogger(myLogger);
结束;
过程TMyTest.TestName();
开始
应为常量='TestName';
变量实际值:=getCurrentTestName();
断言.AreEqual(预期、实际);
结束;
{TMyLogger}
过程TMyLogger.OnBeginTest(const-threadId:tthreaid;const-Test:ITestInfo);
开始
testInfo:=测试;
结束;
初始化
TDUnitX.寄存器测试夹具(TMyTest);
结束。
我想你穿起来一定很合适。