如何从DUnit测试中获得活跃的TGUITestRunner?

时间:2012-03-12 12:36:35

标签: forms delphi unit-testing dunit

TGUITestRunner表单代表DUnit测试结果,并由GUITestRunner.RunTest程序创建一次:

procedure RunTest(test: ITest);
begin
  with TGUITestRunner.Create(nil) do
  begin
    try
      Suite := test;
      ShowModal;
    finally
      Free;
    end;
  end;
end;

我想通过编写彩色状态消息在运行时扩展它。这是可能的,因为GUI底部的状态消息被放入TRichEdit。所以我需要在TTestCase中的某个地方获取指向此表单的指针。

我可以在不修复DUnit代码的情况下这样做吗?也许你可以推荐一些黑客?

1 个答案:

答案 0 :(得分:1)

“解耦”方式可能是在状态消息中使用一些“嵌入代码”:

Status('<blue>Testing');

在dUnit测试框架内,您可以检查状态消息的初始字符是否为“&lt;”,然后提取颜色或其他任何参数,然后修改dUnit来处理它。

这样,您的测试仍将在未经修改的dUnit测试运行器上运行。几年后你可能想要转到最新的dUnit测试,我不建议进行任何API更改,或者尝试访问测试运行器对象。您可以在测试中看到的API和事物是有目的的严格控制。这是适当的面向对象设计的原则,jUnit / xUnit / dUnit的创建者非常相信。