else if (radioButton2.Checked) {
double product = 1.0;
foreach (int v in iVals)
product *= (double)v;
double result = NthRoot(product, iVals.Length);
textBox2.Text = result.ToString("F4");
}
else if (radioButton3.Checked) {
double sum = 0.0;
foreach (int v in iVals)
sum += (1/ (double)v);
double result = (double)(iVals.Length / sum);
textBox2.Text = result.ToString("F4");
}
}
用户单击“Calculate”(计算)按钮时,控制权转至 button1_Click 方法,该方法将 textBox1 中的值提取为单字符串。然后使用 String.Split 方法将每个值解析为字符串数组。接着,单击处理程序将字符串数组转换为整型数组。Button1_Click 逻辑将根据选择的单选按钮控件构造分支,以 double 类型计算相应的平均数,然后将结果的格式设置为四个小数位的字符串形式,显示在 textbox2 控件中。
在计算几何平均数时,应用程序将调用名为 NthRoot 的本地 helper 方法,定义如下:
private static double NthRoot(double x, int n) {return Math.Exp( Math.Log(x) / (double)n );
}
在此未执行任何常规错误检查,以确保应用程序代码尽可能的小并且易于理解。
作为经验之谈,在使用 UI 自动化库编写测试自动化时,不需要访问所测试系统的源代码。大多数情况下,可以通过控件的标题(例如 Calculate)而不是通过控件的内部 Name 属性(例如 button1)访问控件。但是,某些控件(例如,文本框控件)没有标题。
若要使用 UI 自动化访问没有标题的控件,必需知道它们隐含的索引顺序。这一顺序是初始化窗体时控件加载到主窗体控件(或父控件)中的顺序。隐含的索引顺序不一定要与设计时将控件添加到窗体对象中的顺序一样,而且它与选项卡索引顺序也不一样。
通过查看应用程序源代码可以很容易地确定没有标题的控件的隐含索引顺序。例如,如果我检查 StatCalc 应用程序的 Form1.Designer.cs 文件并展开 Windows 窗体设计器生成的代码区,可以看到以下代码:
this.Controls.Add(this.button1);this.Controls.Add(this.groupBox1);
this.Controls.Add(this.label1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.menuStrip1);
文章来源于领测软件测试网 https://www.ltesting.net/