基本上,对于MVVM,我有很多未命名的控件,因为没有必要再给控件提供一个Name(或x:Name)。
但是,在查看编码的UI测试时,似乎我可能需要重新命名所有控件?或者我只是误解了我读到的内容并且有一种MVVM友好的方式来做CUIT?
答案 0 :(得分:4)
如果您希望使用记录测试与控件可靠地交互,则需要为控件提供名称或ID。没有名称,您的测试将依赖于实例属性,您注意到该属性取决于未命名控件相对于其他未命名控件的位置。
如果您的应用程序非常静态,您可能无法获得名称,但移动控件可能会导致破损。您还将遇到动态加载的控件的问题,因为它们可能导致实例值发生更改,并且您的记录操作可能会在错误的控件上发生。
不要误会我的意思,你可以为没有控制名称的应用程序编写CodedUI测试,这只会是一个主要的痛点,录音将是不可靠的。
答案 1 :(得分:3)
您可以从System.Windows.Automation.AutomationProperties命名空间添加自动化ID,而不必更改控件的ID。我建议在预期元素保持与stoj上述相同的顺序时,会非常痛苦。
查看我在[使用自动化ID]中找到的帖子。1以下是他的帖子中的示例:
<MyControl AutomationProperties.AutomationId="AnUniqueValue"/>
protected override string GetAutomationIdCore()
{
return (AutomationProperties.GetAutomationId(_owner));
}
答案 2 :(得分:1)
好吧,显然拥有未命名的控件使得很难进行不破坏Coded UI测试的更改。生成的代码根据它们在XAML中编写的顺序分配可编辑的文本框,这意味着如果我移动控件,则会破坏我的编码UI测试。
我还没有完全探索搜索标准,但我认为使用未命名的控件创建编码UI测试要复杂得多。好吧,我猜Name / x:名字将会卷土重来。