【问题标题】:How to get active TGUITestRunner from DUnit test?如何从 DUnit 测试中获取活动的 TGUITestRunner?
【发布时间】:2012-03-12 12:36:35
【问题描述】:

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

【问题讨论】:

  • 这将严重违背 Xunit 框架的本质。测试用例和测试运行器非常分离,特别是测试用例的设计者对测试运行器一无所知。
  • @DavidHeffernan,我知道我必须创建自己的测试运行程序并实现我需要的东西,但也许可以在不花费数小时实现 ITestListener 的情况下进行这个小修复。
  • 嗯,DUnit毕竟是开源的.....

标签: forms delphi unit-testing dunit


【解决方案1】:

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

Status('<blue>Testing');

在 dUnit 测试框架中,您可以检查状态消息的初始字符是否为“

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

【讨论】:

  • 是的,我以自己的形式实现了IStatusListener,并且可以通过在SetUp 调用SetStatusListener(MyObjectToDisplayStatus) 将其与主测试GUI 一起显示;但是,我想将它更深入地集成到 GUI 中,因为多个表单看起来很糟糕。
猜你喜欢
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 2018-08-25
  • 2014-06-06
  • 2012-03-17
相关资源
最近更新 更多