65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 WatiN、TestDriven.NET、NUnit 结合 Visual Studio 2008 (Team System) 进行测试套件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.30/5 (15投票s)

2008 年 9 月 15 日

CPOL

4分钟阅读

viewsIcon

50144

downloadIcon

525

通过不同的工具和 .NET 技术进行 UI 和功能测试

1.jpg

引言

在这个 Web 应用程序时代,Web 2.0 变得非常流行,现在我们正朝着 Web 3.0 进一步发展。与此同时,许多工具极大地改进了测试。 “改进”可以理解为“变得更容易”。有趣的是,许多程序员(包括我)通常不关心 UI 测试。但想想 Web 2.0 应用程序中的许多 Ajax 风格方法。它们有拖放、自动完成、模态弹出窗口等,这些也应该以某种方式进行测试。世界各地的许多开发人员可能熟悉 WATIR(发音为 _water_)框架,它帮助 Rails 程序员进行 UI 和功能测试。“Jeroen van Menen”受 Watir 启发,创建了一个名为 WatiN 的优秀工具,用于测试 Web 应用程序。

背景

WatiN:它已经发展成为一个易于使用、功能丰富且稳定的框架。WatiN 是用 C# 开发的,旨在为您提供一种简单的方式来自动化 Internet Explorer 和 FireFox 的测试。有关 Watin 的更多信息,请访问 http://watin.sourceforge.net/

NUnit:它是适用于所有 .NET 语言的单元测试框架。最初从 JUnit 移植而来,当前的生产版本 2.4 是基于 xUnit 的 Microsoft .NET 单元测试工具的第五个主要版本。它完全用 C# 编写,并经过完全重新设计,以利用许多 .NET 语言特性,例如自定义属性和其他与反射相关的能力。NUnit 将 xUnit 引入所有 .NET 语言。请从 这里 下载最新版本。

TestDriven.NET:它使您可以轻松地在 Visual Studio 解决方案的任何位置一键运行单元测试。它支持所有版本的 Microsoft Visual Studio,并与最佳 .NET 开发工具集成。此示例使用“TestDriven.NET-2.14.2190 Beta”。

Using the Code

这是一个非常基础的示例,它将通过集成不同的工具来展示 UI 和功能测试的方法。让我们从一个简单的控制台应用程序开始:配置 WaTiN 以与 nUnit 交互(nUnit 使用 STA ApartmentState)。公寓是进程内的一个逻辑容器,用于容纳具有相同线程访问要求的对象。同一公寓内的所有对象都可以从该公寓的任何线程接收调用。.NET Framework 不使用公寓,并且托管对象负责自行以线程安全的方式使用所有共享资源。

由于 COM 类使用公寓,因此公共语言运行时在调用 COM 互操作情况下的 COM 对象时需要创建和初始化一个公寓。托管线程可以创建并进入一个只允许一个线程的单线程公寓(STA),或者包含一个或多个线程的多线程公寓(MTA)。您可以通过将线程的 ApartmentState 属性设置为 ApartmentState 枚举的某个值来控制创建的公寓类型。由于给定的线程只能初始化一次 COM 公寓,因此在第一次调用非托管代码后,您无法更改公寓类型。

好了,您首先需要向项目添加一个 _App.Config_ 文件,其内容如下:

2.jpg

现在您需要向项目添加一些引用。将 WatiN.Core nunit.Framework 的引用都添加到项目中。

3.jpg

然后我修改了我的主类,它将负责打开和关闭我的浏览器。. 代码如下:

4.jpg

然后我编写了用于检查登录(正确)的测试。源代码如下:

5.jpg

从上面的代码中,您可以看到一个服务正在端口 2434 上运行。我创建了一个简单的独立 Web 应用程序项目,它在该端口上运行。该项目的源代码如下:

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
Inherits="SimpleLogin._Default" %>

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Simple  Page</title>
</head> 
<body>
<form id="form1" runat="server" action="Default.aspx">
<div> <table align="center" class="style1">
<tr>
<td class="style2">
UserName:</td>
<td>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
</td>
</tr> <tr>
<td class="style2"> Password:</td>
<td>
<asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style2">
&nbsp;</td>
<td>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
Text="Button" OnClientClick="document.getElementById('form1').submit()"/> 
</td> </tr>
<tr>
<td class="style2">
&nbsp;</td>
<td>
&nbsp;</td>
</tr><tr>
<td class="style2">
&nbsp;</td>
<td>
&nbsp;</td>
</tr>
<tr><td class="style2">
&nbsp;</td>
<td>
&nbsp;</td>
</tr>
<tr>
<td class="style2">
&nbsp;</td>
<td>
<asp:Label ID="Label1" runat="server"></asp:Label>
</td>
</tr>
</table> </div>
</form>
</body>
</html> 

并且

Default.aspx.cs

using System;
using System.Collections;
using System.Configuration; 
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security; 
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq;
namespace SimpleLogin 
{ 
public partial class _Default : System.Web.UI.Page { 
protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
this.Label1.Text = "";
} 

protected void Button1_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text.Equals("rabbi") && this.TextBox2.Text.Equals("rabbi"))
this.Label1.Text = "Welcome Rabbi";
else
this.Label1.Text = "Unknown User";
}
}
} 

然后,由于我已经安装了 TestDriven.NET 的插件,我可以构建项目,然后右键单击并选择“Test With...”,然后选择 NUnit。

6.jpg

这将弹出 NUnit 并允许我单击运行按钮来运行测试。

7.jpg

结论

在这个阶段,我们应该知道如何基本使用 WatiN 框架来测试 Web 应用程序。我希望您能发现这个框架和这篇文章很有用,就像我一样。我个人没有使用过任何其他的 Web 应用程序测试框架。

历史

  • 2008 年 9 月 15 日:初次发布
© . All rights reserved.