CUIT(编码的UI测试)+ MVVM - 我现在必须开始命名我的所有控件吗?

时间:2012-02-20 04:11:07

标签: c# wpf testing mvvm coded-ui-tests

基本上,对于MVVM,我有很多未命名的控件,因为没有必要再给控件提供一个Name(或x:Name)。

但是,在查看编码的UI测试时,似乎我可能需要重新命名所有控件?或者我只是误解了我读到的内容并且有一种MVVM友好的方式来做CUIT?

3 个答案:

答案 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:名字将会卷土重来。