(这在TestComplete论坛中可能会更好,但我想我还是试试看这里)
我们正在寻找使用 TestComplete 自动测试 Delphi 2010 应用程序。我们的应用程序使用的主要控件是我们自己的自定义控件,它直接来自 TCustomControl 。
(作为参考,控件就像一个数字工具,显示带有文本的框。可以选择这些框。控件是完全自定义绘制的,包括选择)。
我们正在寻求使这个TestComplete更加友好,以便我们可以从中读取数据(例如,将哪些数据加载到控件中,选择了哪些数据)
我还应该提到我们的应用程序使用MVC架构并大量使用接口。 TestCompletes调试代理似乎无法返回有关接口的任何类型信息,因此我们无法从中获取任何数据。我怀疑这是我们问题的根源
我正在考虑这两种方法:
向控件添加新属性,该属性将返回有关当前所选框的信息。例如框中的文本,屏幕上的位置,分层路径,并通过TestCompletes调试代理访问它们。
看看为TestComplete创建一个自定义控件添加(我甚至不确定你能用Delphi控件做到这一点)
第一种方法的问题是,如果不使用链接器,它们通常会对属性和函数进行精简。我们希望使用我们的发布版本来测试而不是调试版本。
有没有人对此有任何建议或有此类事情的经验?
由于
编辑:我刚刚阅读了SDK帮助,只能为.net和WPF控件创建自定义控件插件。
答案 0 :(得分:2)
您应该重新考虑使用发布版本进行测试的决定。原因是TestComplete需要一些魔法才能让您的测试生活更轻松,而您不希望在发布版本中出现这种魔法。因此,如果您可以详细说明不使用调试版本进行测试的原因,我们可以尝试找到一个解决方案来撤销此决定。结果可能是,如果您只显示TestComplete的所有可用功能,您将可以访问控件的所有相关数据。
现在回到最初的问题:您可以通过创建一些包装这些接口的特殊类来克服接口问题,从而使TestComplete中的属性可用。
创建一个小的(可能是不可见的)测试表单,您可以集中访问这些类的实例。 (现在是发布模式链接)仅在调试模式下创建此表单,因此,经过精心设计,您只需在需要进行测试时链接相关代码。
答案 1 :(得分:2)
您对调试信息是正确的 - 您可以从发布版本中删除它。因此,您将测试发布版本并同时访问内部。
关于这种情况的说明:“如果没有使用它们,链接器通常会对属性和功能进行精简。”您可以在这里作弊,使链接器为这些功能生成调试信息:
var t: Boolean; begin t := False; if t = True then TheFunctionThatNeverExecutes(); ... end;