NUnitForms測(cè)試GUI應(yīng)用程序的工具
對(duì)于層層嵌套控件的命名,請(qǐng)參考下面的例子
控件的命名 NUnitForms通過(guò)控件的Name屬性來(lái)查找你要測(cè)試的控件. 如果在一個(gè)form中有多個(gè)相同名稱(chēng)的控件, 那么他們必須像下面這樣進(jìn)行限定:
Form PanelA UserControl1 Button (PanelA.UserControl1.Button) UserControl2 Button (UserControl2.Button) PanelB UserControl1 Button (PanelB.UserControl1.Button)
Model/Modeless Dialog 模式窗體/非模式窗體
當(dāng)測(cè)試窗體時(shí),如果這個(gè)窗體要調(diào)出子窗體或是調(diào)出對(duì)話(huà)框,這時(shí)需要把窗體的測(cè)試邏輯放到一個(gè)public void簽名的方法中,并用ExprectModel指定方法名稱(chēng):
[Test]
public void TestOKButtonTest()
{
ExpectModal("FormName", "formNameHandler");
FormName form = new FormName();
form.ShowDialog();
…
public void formNameHandler ()
{
ButtonTester buttonTester = new ButtonTester("okButton", " FormName");
// Check the OK button's text and then click it
Assert.AreEqual("OK", buttonTester.Text, "FormName’s OK button text is wrong '" + buttonTester.Text + "'");
buttonTester.Click();
}
測(cè)試時(shí),如果要調(diào)出message box,請(qǐng)參考下面的寫(xiě)法
ExpectModal("messageBoxCaption", "messageBoxClickerMethod");
多線(xiàn)程測(cè)試
如果運(yùn)用到多線(xiàn)程測(cè)試窗體,應(yīng)該像下面的例子一樣,注冊(cè)一個(gè)委托類(lèi)型,把測(cè)試代碼放到該方法中
public void genericFormHandler()
{
// Do nothing in this method!
}
…
[Test]
public void MainFormTest()
{
…
MainGUIForm mainForm = new MainGUIForm();
mainForm.OnFormReady += new EventHandler<EventArgs> (mainFormTestLogic);
ExpectModal("MainGUIForm", "genericFormHandler");
mainForm.ShowDialog();
…
}
public void mainFormTestLogic (object sender, EventArgs e)
目前可以下載到的版本是NUnitFormsV2.0.0.5 alpha4。
單元測(cè)試的目的是改善代碼
既然可以調(diào)出窗體,可以測(cè)試自定義控件,這是一種測(cè)試自定義控件的好方法。
測(cè)試項(xiàng)目與Resharper配合起來(lái),很容易啟動(dòng),調(diào)試,修改,這樣做單元測(cè)試,才是有益于改善代碼的測(cè)試。