Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.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_Testing_Dunitx - Fatal编程技术网

Delphi 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附带了多种记录器,但这里没有

如何获取当前在DunitX中运行的测试的名称

例如:

procedure TestModule.TestProcedure;
begin
  Assert.Pass('This tests name is ' + TestName);
end

您需要创建
ITestLogger
的实例,并将其添加到当前运行程序:

TDUnitX.CurrentRunner().AddLogger(myLogger);
ITestLogger
有很多方法可以读取大量详细信息。DUnitX附带了多种记录器,但这里没有任何东西真正适合我们的用例

我建议

  • 创建一个新类,派生自
    TDUnitXNullLogger
    from
    DUnitX.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);
    结束。
    
    我想你穿起来一定很合适。