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);
文章來源于領測軟件測試網 http://www.kjueaiud.com/