在TestComplete中使自定义控件更易于测试

时间:2010-07-01 08:01:36

标签: delphi delphi-2010 testcomplete

(这在TestComplete论坛中可能会更好,但我想我还是试试看这里)

我们正在寻找使用 TestComplete 自动测试 Delphi 2010 应用程序。我们的应用程序使用的主要控件是我们自己的自定义控件,它直接来自 TCustomControl

(作为参考,控件就像一个数字工具,显示带有文本的框。可以选择这些框。控件是完全自定义绘制的,包括选择)。

我们正在寻求使这个TestComplete更加友好,以便我们可以从中读取数据(例如,将哪些数据加载到控件中,选择了哪些数据)

我还应该提到我们的应用程序使用MVC架构并大量使用接口。 TestCompletes调试代理似乎无法返回有关接口的任何类型信息,因此我们无法从中获取任何数据。我怀疑这是我们问题的根源

我正在考虑这两种方法:

  1. 向控件添加新属性,该属性将返回有关当前所选框的信息。例如框中的文本,屏幕上的位置,分层路径,并通过TestCompletes调试代理访问它们。

  2. 看看为TestComplete创建一个自定义控件添加(我甚至不确定你能用Delphi控件做到这一点)

  3. 第一种方法的问题是,如果不使用链接器,它们通常会对属性和函数进行精简。我们希望使用我们的发布版本来测试而不是调试版本。

    有没有人对此有任何建议或有此类事情的经验?

    由于

    编辑:我刚刚阅读了SDK帮助,只能为.net和WPF控件创建自定义控件插件。

2 个答案:

答案 0 :(得分:2)

您应该重新考虑使用发布版本进行测试的决定。原因是TestComplete需要一些魔法才能让您的测试生活更轻松,而您不希望在发布版本中出现这种魔法。因此,如果您可以详细说明不使用调试版本进行测试的原因,我们可以尝试找到一个解决方案来撤销此决定。结果可能是,如果您只显示TestComplete的所有可用功能,您将可以访问控件的所有相关数据。

现在回到最初的问题:您可以通过创建一些包装这些接口的特殊类来克服接口问题,从而使TestComplete中的属性可用。

创建一个小的(可能是不可见的)测试表单,您可以集中访问这些类的实例。 (现在是发布模式链接)仅在调试模式下创建此表单,因此,经过精心设计,您只需在需要进行测试时链接相关代码。

答案 1 :(得分:2)

您对调试信息是正确的 - 您可以从发布版本中删除它。因此,您将测试发布版本并同时访问内部。
关于这种情况的说明:“如果没有使用它们,链接器通常会对属性和功能进行精简。”您可以在这里作弊,使链接器为这些功能生成调试信息:

  1. 发布功能。链接器不会触及已发布的元素。
  2. 使功能虚拟化。链接器不排除虚方法。
  3. 在代码中的某处调用您的函数。要在您的代码中包含调用而不实际调用任何内容,您可以执行以下操作:
  4. var t: Boolean;
    begin
      t := False;
      if  t = True then
        TheFunctionThatNeverExecutes();
    ...
    end;