NUnitForms测试GUI应用程序的优秀工具

发表于:2015-4-24 10:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:大智若简    来源:51Testing软件测试网采编

  著名的NUnit是单元测试的优秀工具,但是要在一个测试方法中启动GUI程序,比如Windows Form界面,这比较难做到。NUnitForms就是为解决这个问题产生的,它是NUnit的一个扩展程序,可用于测试Windows Forms 类型的程序。
  首先从NUnitForm网站下载安装程序,地址是 http://nunitforms.sourceforge.net/index.html,并执行安装。
  在VS2010中新增一个测试项目,添加对两个程序集NUnit.Framework和NUnit.NunitForms引用,添加新测试类型:
  using NUnit.Framework;
  using NUnit.Extensions.Forms;
  …
  Namespace yourTestSuiteNameSpace
  {
  [TestFixture]
  public class myGUITests : NUnitFormTest
  …
  }
  如果要显示GUID,则测试类型应该继承于NUnitFormTest, 添加TestFixture特性,再添加一个Test方法:
  [Test]
  pubilc void ShowDilalogTest()
  {
  Form dlg=new Form();
  dlg.Show();
  }
  启动GUI界面
  如果您的Visual Studio已经安装了Resharper插件,则可以直接点击被测试方法的签名地方,选择调试或是运行测试,上面的测试方面会显示一个GUI界面,关闭窗体,测试完成。
  也可以用窗体实例的ShowDialog 方法调出界面,显示为个model对话框。
  引用控件
  如果要引用被测试窗体中的控件,命名空间NUnitForms 中有一些以Tester类型结尾的类型可供使用。这些类型继承于ControlTester ,可以用ControlTester 来测试控件,也可以用它的派生类型。
  以ControlTester类来测试任何控件,可以像这样通过属性的索引来访问它的属性.
  ControlTester textBox = new ControlTester("nameOfSomeTextBox");
  Assertion.AssertEquals("defaultText", textBox["Text"]);
  textBox["text"] = "newText";
  尝试使用FireEvent方法来触发控件的一个事件:
  ControlTester button = new ControlTester("nameOfSomeButton");
  button.FireEvent("Click");
  比如,为了引用窗体MyFormName类型中的button1的按钮,可以下面的方法引用此控件:
  ButtonTester buttonTester = new ButtonTester("button1", "MyFormName");
  如果你省略了"formName"参数, NUnitForms将在所有打开的Form中查找控件。
  对于Panel控件,要引用它的子控件,可参考下面的写法,以逗号分隔多个名称:
  CheckBoxTester uncheckBoxTester = new CheckBoxTester( "aPanelName.checkBoxName", "MyFormName");
  RadioButtonTester radioTester = new RadioButtonTester("mainFormControlName.panelName.radioButtonName",  "MyFormName");
  如果NUnitForms找不到你的控件, 会抛出一个NoSuchControlException异常. 如果控件的名称没有资格使它成为一个唯一命名的控件, 将会被抛出AmbiguousNameException异常.
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号