对于层层嵌套控件的命名,请参考下面的例子
控件的命名 NUnitForms通过控件的Name属性来查找你要测试的控件. 如果在一个form中有多个相同名称的控件, 那么他们必须像下面这样进行限定:
Form PanelA UserControl1 Button (PanelA.UserControl1.Button) UserControl2 Button (UserControl2.Button) PanelB UserControl1 Button (PanelB.UserControl1.Button)
Model/Modeless Dialog 模式窗体/非模式窗体
当测试窗体时,如果这个窗体要调出子窗体或是调出对话框,这时需要把窗体的测试逻辑放到一个public void签名的方法中,并用ExprectModel指定方法名称:
[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(); } |
测试时,如果要调出message box,请参考下面的写法
ExpectModal("messageBoxCaption", "messageBoxClickerMethod");
多线程测试
如果运用到多线程测试窗体,应该像下面的例子一样,注册一个委托类型,把测试代码放到该方法中
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。
单元测试的目的是改善代码
既然可以调出窗体,就可以测试自定义控件,这是一种测试自定义控件的好方法。
测试项目与Resharper配合起来,很容易启动,调试,修改,这样做单元测试,才是有益于改善代码的测试。