3

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 代码的情况下做到这一点吗?也许你可以推荐一些黑客?

4

1 回答 1

1

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

Status('<blue>Testing');

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

这样,您的测试仍将在未修改的 dUnit 测试运行器上运行。几年后,您可能想要迁移到最新的 dUnit 测试,我不建议您进行任何 API 更改或尝试访问测试运行器对象。您可以在测试中看到的 API 和内容是故意严格控制的。这是正确的面向对象设计的原则,jUnit/xUnit/dUnit 的创建者坚信这一点。

于 2012-03-12T13:31:56.283 回答