WatiN系列之五 Watin与Nunit结合进行测试

转帖地址:http://www.51testing.com/?uid-61753-action-viewspace-itemid-220045

 

概述 51Testing软件测试网9y"R[V;pw*@9F1g

  上篇文章 中介绍了在 VSTS 中如何使用 watin 。本篇文章介绍如何在 NUnit 中使用 Watin

2E@)~?N0W!rJr3P!t0

Nunit 作为一款老牌的单元测试 工具,在开发人员中得到广泛的应用。 51Testing软件测试网'?&_ k^l4fM

 

9SH*~}�]9F/Z0

准备工作 51Testing软件测试网0?7V&K4`H"GM;m

  在开始介绍如何在 Nunit 中使用 Watin 之前,需要做一些准备工作。 51Testing软件测试网o/c1q]w!EM

l  下载及安装 NUnit

Q)`B{[)q0

l  创建演示 Web 程序 51Testing软件测试网ZM;` @2]$/'wk6q

l  创建及配置测试程序

7r1rF:rN'_/n4k$C!S0

    下载及安装 Nunit 51Testing软件测试网_0pX2f&J,c

    NUnit 官方站点下载 Window Installer 51Testing软件测试网r QK / }Fu(JK

    创建演示 Web 程序

0DL$~5H�KzP:^!U/0

我们将创建一个 ASP.NET 网站 , 接下来的测试代码将是针对这个简单 Web 站点的。先创建一个新项目。

#r!E Kx N%?v%c1`0

WatiN系列之五 Watin与Nunit结合进行测试_第1张图片 51Testing软件测试网zb7P iLR,I%es

接下来在解决方案中创建业务逻辑层的类库 BusinessLayer ,其中添加一个类 Arithmetic ,用于一些算术操作。 51Testing软件测试网1ZoGb6f] B7s$]v

创建及配置测试程序 51Testing软件测试网&V4c/cE3Y

然后在解决方案中创建一个新的类库 WebAppUITesting, 这个就是测试程序。 51Testing软件测试网-M X;i$Z Y

在类库 WebAppUITesting 中添加应用配置文件 App.config, 内容如下 : 51Testing软件测试网 PP&cO4/rfzG

<? xml version = "1.0 "encoding = "utf-8 "?>

3K G#x4VmZ|0

< configuration >

-[6Z%~w7{0

  < configSections > 51Testing软件测试网0iF,S P1tg2Z,s#NWJd

    < sectionGroup name = "NUnit ">

m(Nt{gOm0

      < section name = "TestRunner "type = "System.Configuration.NameValueSectionHandler "/>

3Y^6q5q} Kag0

    </ sectionGroup > 51Testing软件测试网�Q po�~qTm%L

  </ configSections > 51Testing软件测试网 m:x"?"}JY

  < NUnit >

i@1N4t:T)q-j(j0

    < TestRunner > 51Testing软件测试网.t4Qp,y:x'G^T

      <!-- Valid values are STA,MTA. Others ignored. --> 51Testing软件测试网)c5]1n%I_9`}

      < add key = "ApartmentState "value = "STA "/> 51Testing软件测试网TI.J V8[

    </ TestRunner > 51Testing软件测试网 Qg8a6n(RV @L1U7Eu0j

  </ NUnit >

)Y G$Hg%Y1|5zV.F0

</ configuration > 51Testing软件测试网 S(X(n&{x-F4Ku^

  备注 :Watin 只能在 STA 下运行 , Nunit 确是在 MTA 下运行的。所以直接在 Nunit 中运行 watin 代码会报错,所以为了解决这个问题,在测试程序中加入 App.config 配置文件可以解决这个问题。 51Testing软件测试网)a-k8s�FT:K1n._B

 

'F? I Qa]zq0

在类库 WebAppUITesting 中添加引用

0Ox.ucP:^%Zw0

WatiN系列之五 Watin与Nunit结合进行测试_第2张图片 51Testing软件测试网J5DbQ+b*p

然后右键点击该类库,在右键菜单中选择“属性” , 在属性 -> 调试面板中,“启动外部程序”设置为 Nunit.exe 。这样在调试代码后会自动打开 Nunit 51Testing软件测试网%I"h$upQ/k!EY]"h

最后解决方案的目录结构如下 :

7c/h"[~O e1J0

WatiN系列之五 Watin与Nunit结合进行测试_第3张图片 51Testing软件测试网`/1~C7^

编写测试程序 , 运行测试 51Testing软件测试网)E {6lA U} F

  准备工作完成之后,把生成的被测试演示 Web 程序 (WebApp) 部署到 IIS 中,当然你也可以使用 VS 中自带的 web 服务器。 Web 页如下

u�E3iB7NU5B;N0

WatiN系列之五 Watin与Nunit结合进行测试_第4张图片

^!nj9p;T,[0

  这个站点的功能很简单,就是输入两个数字,然后提交后返回相加的结果。 51Testing软件测试网:N%@3toS7m

然后我们就可以编写针对这个站点功能的测试代码了。我们主要编写测试用例。

-MdsK.Gx{0j0

  用例一 输入两个数字,验证加法是否正确 51Testing软件测试网c^ R:u|+rV-/:i8Y

用例二 输入非数字字符,验证异常处理是否正确

:ZC }!W? g/]0

测试代码如下: 51Testing软件测试网�BXc_C*_,A3V

using System.Diagnostics;

s aVEXZ0

using WatiN.Core;

,/B!y*}d_fL0

using NUnit.Framework;

+s,g"[;~7|ue0

using System;

4B'nY(C1R0

using BusinessLayer; 51Testing软件测试网ml+dL0P+v*IN

namespace WebAppUITesting 51Testing软件测试网}$ehv7I8R%AI7q

{ 51Testing软件测试网/6?/b(} x;k

    [TestFixture ] 51Testing软件测试网T:`,pH9[6jJ"~

    public class UITesting 51Testing软件测试网u|/ ~o

    {

0_|9E5M�W/X9P+/0

        IE ie=null ; 51Testing软件测试网'@@e)w%~M�~

        [TestFixtureSetUp ] 51Testing软件测试网kP$Hn~%Kz

        public void InitTest()

%rp0I.Xm[p S@0

        { 51Testing软件测试网4R{;DV$^:RQ7_

            ie =new IE ("http://localhost/WebApp/Default.aspx" ); 51Testing软件测试网yIj4N(I:Vg"K

        } 51Testing软件测试网j5O_? }"q&N9q[/tD

        // 测试加法 51Testing软件测试网.RP o�/y8_7jD p

        [Test ] 51Testing软件测试网 rG v"OD,I

        public void AdditionTest() 51Testing软件测试网bMQ"o rp-Bc

        {

9|;{snN6n*r q/Q0

                int number1 = 1;

knJ+X(G0

                int number2 = 2;

R^q0J(Ku6|D [4?0

                //Watin 测试代码

E5ec,z]2OL0

                ie.ShowWindow(NativeMethods .WindowShowStyle .Maximize);  51Testing软件测试网4|'ar lj"z#_0Q N

                ie.TextField(Find .ById("num1" )).TypeText(number1.ToString());

e QW*~L5D+T*|0

                ie.TextField(Find .ById("num2" )).TypeText(number2.ToString());

Z ?-T L'L6e ?0kh0

                ie.Button(Find .ById("btnCheck" )).Click();                              

WA3d2QZk0BK0

                // 预期结果

v*T0tf Tw X Y0

                Arithmetic ac =new Arithmetic (); 51Testing软件测试网9aZYa y-e2p+eAW

                string expected =  ac.addition(number1,number2).ToString(); 51Testing软件测试网�Z1a/??8]

                // 实际结果

9U$K+CeDe0

                string actual = ie.Span(Find .ById("lblResult" )).Text; 51Testing软件测试网S/e0E:G D O$Vp.w

                // 断言测试结果是否正确

QNw4Gb3f0R5in@4c3x0

                Assert .AreEqual(expected,actual);        

THF{�i0

        } 51Testing软件测试网 U$f @#a!N+H.C

        // 测试异常处理 51Testing软件测试网*q%xp%G7IG _m6r6P

        [Test ]

6CD3c W2M+` m i9U0

        public void ExceptionTest()

|8}cV(c7NDK e0

        { 51Testing软件测试网KZ;@2C5Q

            //Watin 测试代码 51Testing软件测试网/d K9BG0Ox4R9{

            ie.TextField(Find .ById("num1" )).TypeText("A" );

v x#yhy0

            ie.TextField(Find .ById("num2" )).TypeText("1" ); 51Testing软件测试网(KuG7d)ls;C

            ie.Button(Find .ById("btnCheck" )).Click(); 51Testing软件测试网(H _9f5/ rA

            // 预期结果

#DjE#?(_0

             string expected =" 输入字符格式不正确!" ;

j6U2?#d$qg`,^0

            // 实际结果

a6C1rUL h8?+dvs0

            string actual = ie.Span(Find .ById("lblResult" )).Text;

v9ZJ%Q3[F0

            // 断言测试结果是否正确 51Testing软件测试网u7DJ)m8Z$c

            Assert .AreEqual(expected, actual);

B9W9dFCS^*m?0

        }

7P1V$uZq2@;YX0

        [TestFixtureTearDown ]

J0j�B-mM0

        public void ClearTest() 51Testing软件测试网;uB"ynh]*Q;B

        {

`$}XX7A0Y2q0

            ie.Close();

7x#y,n#k8N5rd @Z0

        }

G6hQ-tc0

    }

Z1@$dhM0

}

8tv||;B2x P-a0

  51Testing软件测试网*QqP4ztk[ |DMM{

测试结果如下:
u/N)c /v,F0

)m e8BT{%?:yK9K5j0

WatiN系列之五 Watin与Nunit结合进行测试_第5张图片

*X B0ts:K0

结束语

e#|D"j,x+~hf0

  Nunit 中使用 Watin 测试思路就是这样的。如果有兴趣的话可以自己动手试试看,这是学习 的最佳途径。也可以下载附件中的代码进行学习。

+r7ksO�QD�b*jg1}0

WatiN Sample

WatiN Sample.rar(207 KB)

你可能感兴趣的:(WatiN系列之五 Watin与Nunit结合进行测试)