大约一年前,我的部门已开始使用Ranorex进行自动化GUI测试。为了能正常工作,Ranorex将必须确定我们在项目中使用PreBuild事件的某些UserControl,以确保基本上每个XAML元素都具有唯一的x:Uid-tag:
“ $(MSBuildBinPath)\ MSBuild.exe” / p:配置= $(配置名称)/ p:平台= $(平台名称)/ t:updateuid“ $(ProjectPath)”> NUL
虽然当前的解决方案有效,但它具有两个我不喜欢的缺点: 1.每个元素都有一个x:Uid-tag,即使是那些永远不需要的元素(大约占XAML的80%)。 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?