转帖地址:http://www.51testing.com/?uid-61753-action-viewspace-itemid-220045
概述
上篇文章 中介绍了在 VSTS 中如何使用 watin 。本篇文章介绍如何在 NUnit 中使用 Watin 。
Nunit 作为一款老牌的单元测试 工具,在开发人员中得到广泛的应用。
准备工作
在开始介绍如何在 Nunit 中使用 Watin 之前,需要做一些准备工作。
l 下载及安装 NUnit
l 创建演示 Web 程序
l 创建及配置测试程序
下载及安装 Nunit
从 NUnit 官方站点下载 Window Installer
创建演示 Web 程序
我们将创建一个 ASP.NET 网站 , 接下来的测试代码将是针对这个简单 Web 站点的。先创建一个新项目。
接下来在解决方案中创建业务逻辑层的类库 BusinessLayer ,其中添加一个类 Arithmetic ,用于一些算术操作。
创建及配置测试程序
然后在解决方案中创建一个新的类库 WebAppUITesting, 这个就是测试程序。
在类库 WebAppUITesting 中添加应用配置文件 App.config, 内容如下 :
<? xml version = "1.0 "encoding = "utf-8 "?> < configuration > < configSections > < sectionGroup name = "NUnit "> < section name = "TestRunner "type = "System.Configuration.NameValueSectionHandler "/> </ sectionGroup > </ configSections > < NUnit > < TestRunner > <!-- Valid values are STA,MTA. Others ignored. --> < add key = "ApartmentState "value = "STA "/> </ TestRunner > </ NUnit > </ configuration > |
备注 :Watin 只能在 STA 下运行 , 而 Nunit 确是在 MTA 下运行的。所以直接在 Nunit 中运行 watin 代码会报错,所以为了解决这个问题,在测试程序中加入 App.config 配置文件可以解决这个问题。
在类库 WebAppUITesting 中添加引用
然后右键点击该类库,在右键菜单中选择“属性” , 在属性 -> 调试面板中,“启动外部程序”设置为 Nunit.exe 。这样在调试代码后会自动打开 Nunit 。
最后解决方案的目录结构如下 :
编写测试程序 , 运行测试
准备工作完成之后,把生成的被测试演示 Web 程序 (WebApp) 部署到 IIS 中,当然你也可以使用 VS 中自带的 web 服务器。 Web 页如下
这个站点的功能很简单,就是输入两个数字,然后提交后返回相加的结果。
然后我们就可以编写针对这个站点功能的测试代码了。我们主要编写测试用例。
用例一 输入两个数字,验证加法是否正确
用例二 输入非数字字符,验证异常处理是否正确
测试代码如下:
using System.Diagnostics; using WatiN.Core; using NUnit.Framework; using System; using BusinessLayer; namespace WebAppUITesting { [TestFixture ] public class UITesting { IE ie=null ; [TestFixtureSetUp ] public void InitTest() { ie =new IE ("http://localhost/WebApp/Default.aspx" ); } // 测试加法 [Test ] public void AdditionTest() { int number1 = 1; int number2 = 2; //Watin 测试代码 ie.ShowWindow(NativeMethods .WindowShowStyle .Maximize); ie.TextField(Find .ById("num1" )).TypeText(number1.ToString()); ie.TextField(Find .ById("num2" )).TypeText(number2.ToString()); ie.Button(Find .ById("btnCheck" )).Click(); // 预期结果 Arithmetic ac =new Arithmetic (); string expected = ac.addition(number1,number2).ToString(); // 实际结果 string actual = ie.Span(Find .ById("lblResult" )).Text; // 断言测试结果是否正确 Assert .AreEqual(expected,actual); } // 测试异常处理 [Test ] public void ExceptionTest() { //Watin 测试代码 ie.TextField(Find .ById("num1" )).TypeText("A" ); ie.TextField(Find .ById("num2" )).TypeText("1" ); ie.Button(Find .ById("btnCheck" )).Click(); // 预期结果 string expected =" 输入字符格式不正确!" ; // 实际结果 string actual = ie.Span(Find .ById("lblResult" )).Text; // 断言测试结果是否正确 Assert .AreEqual(expected, actual); } [TestFixtureTearDown ] public void ClearTest() { ie.Close(); } } } |
测试结果如下:
结束语
在 Nunit 中使用 Watin 测试思路就是这样的。如果有兴趣的话可以自己动手试试看,这是学习 的最佳途径。也可以下载附件中的代码进行学习。