2

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

我们正在研究使用TestComplete对我们的Delphi 2010应用程序进行自动化测试。我们的应用程序使用的主要控件是我们自己的自定义控件,它直接派生自TCustomControl

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

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

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

我正在考虑这两种方法:

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

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

第一种方法的问题是,如果不使用属性和函数,链接器通常会删除它们。我们想使用我们的发布版本进行测试,而不是调试版本。

有没有人对此有任何建议或经验?

谢谢

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

4

2 回答 2

2

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

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

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

于 2010-07-01T08:56:04.443 回答
2

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

  1. 使功能发布。链接器不会触及已发布的元素。
  2. 使功能虚拟化。链接器不排除虚拟方法。
  3. 在代码中的某处调用您的函数。要在代码中包含调用而不实际调用任何内容,您可以执行以下操作:
var t:布尔值;
开始
  t := 错误;
  如果 t = True 那么
    TheFunctionThatNeverExecutes();
...
结尾;
于 2010-07-05T09:53:33.417 回答