编码UI中的陈旧对象

时间:2014-06-10 09:03:04

标签: coded-ui-tests

要删除过时的对象问题(例如,当我们运行多个输入的测试脚本时,它在第二次迭代时失败,因为在每次运行结束时没有清除对象),我总是添加了在设计器文件中搜索配置。在此之后,我的脚本在多个输入上成功运行,但如果需要将新对象重新添加到同一个设计器文件中,那么我的设计器文件将被重新生成,并且始终搜索配置更改将丢失。

即使重新设计设计器文件,有没有办法保留始终搜索配置保留在设计器文件中?

1 个答案:

答案 0 :(得分:1)

生成UI地图时,实际上有两个文件随附。首先,正如您所发现的那样,生成的文件包含编码的UI测试构建器生成的所有丑陋代码。当然,对代码外部进行任何更改都将重新生成文件。第二个文件是生成的设计器类附带的部分类。此文件不会重新生成,但作为部分包含与设计器文件相同的所有对象引用和属性(它只显示为空)。您可以引用要将此属性添加到此处的控件,并且不会重新生成它。

另一个替代方案,虽然可能不是一个好主意,但是要把

        Playback.PlaybackSettings.AlwaysSearchControls = true 

你的测试方法/类初始化/测试初始化​​。这将迫使测试始终搜索每个控件。正如您可能想象的那样,当您处理大型UI地图或特别长的测试方法时,这会对性能产生重大影响。

您也可以将控制对象的搜索配置设置为始终搜索。请记住,这将搜索此控件及其所有孩子,因此我不建议将其放在有几个孩子的父母身上,例如文档。

        aControl.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);