Watin 是做一个 UI 自动化测试 工具进行开发的而非单元测试 工具。但并不意味着单元测试中不可以使用 Watin 。有时候作为纯粹单元测试的补充,适当的 UI 测试也是必要的。在 VSTS 单元测试工具和 Watin 结合使用具有很多。
1) VSTS 测试工具提供了良好的运行和结果查看工具以及其它 强大的功能
2) MSunit 具有丰富的断言语句进行结果判断
3) 可以在单元测试代码中穿插 VSTS web 测试代码,以丰富 Watin 的 UI 测试
4) Watin 进行 UI 测试可以使单元测试更直观易懂。
VSTS 中使用 Watin 的大体步骤
1) VSTS 中创建测试项目,然后创建单元测试
2) 测试项目中引用 WatiN.core, 创建 StaticBrowserInstanceHelper 类
3) 编写测试代码,加入断言
4) 运行测试,查看测试结果
如何创建测试项目 , 如何创建单元测试这里就不赘述了,下面从第 2 步骤讲起。
为何使用 StaticBrowserInstanceHelper 类
在第二步骤中创建了 StaticBrowserInstanceHelper 类(该类代码在附件中)。创建这个类没有别的目的,就是解决一个在 VSTS 中运行 watin 会出现的一个问题。按照平常思路 , 我们直接创建单元测试,在其中编写测试代码,如下:
//定义静态IE对象 private static IE ie; //单元测试初始化 [ClassInitialize ] public static void testInit(TestContext testContext) { ie =new IE ("http://baidu.com" ); } [TestMethod ] [TestMethod ] ……… |
使用上述编写代码思路是对的,但是会出现一个问题 (Watin 本身的问题 ), 运行第一个测试方法可以通过,其他 测试方法均为失败。大家可以自己试一下,确实是这样。所以 Watin 开发人员给出了解决方案是编写一个 StaticBrowserInstanceHelper 类用于解决这个问题。你在编写初始化代码时 , 就可以这样写
static StaticBrowserInstanceHelper <IE > ieStaticInstanceHelper; [ClassInitialize ] public static void testInit(TestContext testContext) { ieStaticInstanceHelper =new StaticBrowserInstanceHelper <IE >(); ieStaticInstanceHelper.Browser =new IE ("http://baidu.com" ); } public IE IE { get {return (IE )ieStaticInstanceHelper.Browser; } set { ieStaticInstanceHelper.Browser =value ; } } [ClassCleanup ] public static void MyClassCleanup() { ieStaticInstanceHelper.Browser.Close(); ieStaticInstanceHelper =null ; } [TestMethod ] [TestMethod ] |
编写测试代码 , 加入断言
单元测试初始化准备代码编写之后,就可以编写测试方法了。以百度 页面为例来演示测试代码编写。
验证页面是否存在指定文本文字
[TestMethod ] public void testOne() { //页面是否包含“百科”文字 Assert .IsTrue(IE.ContainsText("百科" )); } |
验证页面中指定元素的 Value 是否正确
[TestMethod ] public void testThree() { Assert .AreEqual("MP3" , IE.Link(Find .ByUrl("http://mp3.baidu.com/" )).Text); } |
运行测试 , 查看测试结果
在测试列表编辑器中运行单元测试
勾选需要测试的测试方法后,右键菜单中选择“运行选择的测试”进行测试。然后开始运行测试。测试运行结果后,会在“测试结果”面板中列出测试结果,如下
双击每项测试结果可以查看测试详细信息。
至此,在 VSTS 测试中使用 Watin 的整个过程就是这样。限于篇幅限制,只能对大体的过程做些简单的介绍。