大约一年前,我的部门开始使用 Ranorex 进行自动化 GUI 测试。为了正确工作,Ranorex 必须识别我们在项目中使用 PreBuild 事件的某些 UserControl,以确保基本上每个 XAML 元素都有一个唯一的 x:Uid-tag:
"$(MSBuildBinPath)\MSBuild.exe" /p:Configuration=$(ConfigurationName) /p:Platform=$(PlatformName) /t:updateuid "$(ProjectPath)" > NUL
虽然当前的解决方案有效,但它有两个我不喜欢的缺点: 1. 每个元素都有一个 x:Uid-tag,即使是那些永远不需要的(大约 80% 的 XAML)。2. 如果没有为元素定义 x:Name,则 AutomationId 将收到来自 msbuild.exe 的通用名称,如“TextBox_1”、“TextBox2_”、“TextBox3_”……,这有时会让测试人员感到困难在创建测试时识别正确的 UserControl。
如果我们可以让 Visual Studio对某些 UserControl 类型强制使用 x:Name,那对我们来说会更好。在 99% 的情况下,我们的测试人员只使用用于用户输入的 UserControl,例如 TextBox、ComboBox 和 CheckBox。我知道不需要 x:Name 是 WPF 的优点之一,但在我们的例子中它真的很有意义,所以问题仍然存在:
有没有办法让 Visual Studio 强制使用 x:Name?