开发环境:

Widnows8

Microsoft Visual Studio Ultimate 2012

 

1. 新建一个 Windows Forms Application

Figue1 Create a new Windows Forms Application

 

 

2. 设计界面如(Figue2)所示

Figue2 Form UI

 

界面很简单,含有两个Label:

Label1.Text = “Username”;

Label2.Text = “Password”;

 

三个输入框:

tbUsername,tbPassword,tbResult

 

一个按钮:

btnLogin

 

添加代码逻辑,实现用户点击Login按钮时,把用户输入的用户名,密码输出到tbResult里:

private void btnLogin_Click(object sender, EventArgs e)
{
tbResult.Text = "Username is "+tbUsername.Text + Environment.NewLine + "Password is "+tbPassword.Text;
}

上述步骤完成后,编译刚新建的这个项目,找到Bin目录,把生成的.EXE文件发送快捷方式到桌面,方便后边使用.

 

 

3.添加CodeUI测试项目

 

Figue3 Add new Project

 

4.步骤三点击OK后弹出如下窗口

Figue4 Generate Code for Coded UI Test

 

5. 保持默认,直接点击OK按钮

Figue5 UIMap - Coded UI Test Builder

如上图所示,共显示四个按钮,依次分别表示:

开始录制Start Recoding(Alt + R),

显示录制的步骤Show Recorded Steps(Alt + S),

添加断言Add Assertion(Alt + U),

生成代码Generate Code(Alt + G)

 

6.点击录制,开始录制

点击录制按钮后开始录制,

打开桌面上的应用程序(第一步,第二步创建的简单的WinForm应用程序),

然后在tbUsername框中输入"Username",

按下Tab键,继续在tbPassword文本框中输入Password

鼠标点击Login按钮,如图6所示

Figue6 typing when Recording

 

上述步骤中包括鼠标事件,键盘事件均被录制成了一个一个的步骤Step,你可以点击"显示录制的步骤"按钮查看录制了哪些步骤

Figue7 Recorded Steps

上述Steps列表中的条目可以右键进行删除,比如Click ‘Minimize’ button这个是我最小化当前Windows Live Writer窗口时录制下来的,这个其实不必要的

 

 

7.结束录制直接点击*生成代码*按钮即可,在随后弹出来的提示框中输入方法名称,如图8所示

Figue8 Generate Code

 

点击"Add and Generate"按钮后,VS自动生成如下单元测试代码:

        [TestMethod]
public void CodedUITestMethod1()
{
// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
// For more information on generated code, see http://go.microsoft.com/fwlink/?LinkId=179463
this.UIMap.RecordedMethod3();
}

这里我们添加一个步骤:验证tbResult的内容正是我们想要的内容,即增加一个断言Assertion

此时UIMap工具中查看录制步骤的按钮置灰不可用,原来置灰的新增断言按钮现在可用了,如下图箭头所指

Figue9 Add Assertion

 

鼠标点击"新增断言"按钮,保持鼠标按下的状态,将其十字标拖至tbResult控件上

如下图10所示

Figue10 To generate assertions for your UI controls, click the crosshairs icon and drag it to the control that you want to verify is correct.

在添加断言窗口找到tbResult的Text属性,右键添加断言

Figue11 Right Client on Text Property to add assertion

保持下图中的默认内容不变,直接点击OK按钮

Figue12 Add assertion for Text

再次击点生成代码按钮,弹出提示框(Figue14)

Figue13 Click Generate Code button for Generating assertion Codes

 

在弹出的提示框中输入断言代码的方法名称,点击Add and Generate按钮,回到VS找到它:)

Figue14 Generate assertion codes

 

原方法变成如下所示

        [TestMethod]
public void CodedUITestMethod1()
{
// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
// For more information on generated code, see http://go.microsoft.com/fwlink/?LinkId=179463
this.UIMap.RecordedMethod3();
this.UIMap.AssertMethod2();
}

8.运行单元测试

鼠标停留在CodedUITestMethod1块内右键选择Run Tests,或者使用组合快捷键,Ctrl + R,T运行单元测试

稍微有点慢,耐心等候,期间最好不用动鼠标和键盘,它就会把刚才录制的过程再重复一遍.

至此,我们完成了一个简单的自动化测试的小例子.

[Microsoft Test Manager]CodeUI初探的更多相关文章

  1. [已解决]从微软合作伙伴资源和MSDN下载系统和软件Microsoft download Manager无效

    有个itellyou,更新了所有MSDN的软件包.如果自己有微软的注册账户,还是从微软官网下载比较好.而且对自己账户里的系统和itellyou里的做了对比.发现SHA1码不相同,估计官方分配的序列号也 ...

  2. Swift Package Manager(一)初探

    一句话:Swift Package Manager(swift包管理器,简称:SPM)就是在swift开发中用来替代CocoaPod的:在swift开发中,SPM完全可以替代CocoaPod的功能,并 ...

  3. Tomcat的Admin和Manager工具初探

    版本说明 apache-tomcat-5.5.28.zip(解压缩版) Manager工具是自带的,Admin工具apache-tomcat-5.5.28-admin.zip需要单独安装 下载地址:h ...

  4. 部署Service Manager 2012遇到的2个问题

    上周装了个Service Manager 2012学习,以便完善System Center整个解决方案,在部署期间遇到2个问题,花了我不少时间解决.一.安装时提示“执行自定义操作时失败”每当到了安装的 ...

  5. Service Manager 2012

    部署Service Manager 2012遇到的2个问题 上周装了个Service Manager 2012学习,以便完善System Center整个解决方案,在部署期间遇到2个问题,花了我不少时 ...

  6. SharePoint Server2016的User Profile Services服务

     前言SharePoint Server 的早期版本具有内置的 ForeFront Identity Manager (FIM) 副本,可在 SharePoint Server 服务器产品内运行.具 ...

  7. sharePoint 2016 弃用和删除的功能

    前言 sharepoint 2016版本正式发布,但是相比较2013版本,还是删除或者准备删除一些功能,我们需要了解一下哪些功能已经被删除掉或者在下一个版本中移除,因为这些可能影响我们现有系统是否能够 ...

  8. windows常用端口对应表

    端口概念 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem.集线器.交换机.路由器用于连接其他网络设备的接口,如RJ-45端口.SC端口等等.二是逻辑意义 ...

  9. csc.rsp Nuget MVC/WebAPI、SignalR、Rx、Json、EntityFramework、OAuth、Spatial

    # This file contains command-line options that the C# # command line compiler (CSC) will process as ...

随机推荐

  1. mysql 数据库备份

    (2)使用命令行工具 备份数据库: mysqldump –user=root –password=root密码 –lock-all-tables 数据库名 > 备份文件.sql 恢复数据库: m ...

  2. VBS 相关知识 笔记

    1.Option Explicit: 必须声明了变量之后才能赋值.  原话:语句在模块级别中使用,强制显式声明模块中的所有变量. w3scholl看到的内容: 变量声明 您可以使用 Dim.Publi ...

  3. 《C++必知必会》学习笔记

    转载:http://dsqiu.iteye.com/blog/1734640 条款一 数据抽象 抽象数据设计遵循步骤:(1)为类型取一个描述性的名字.(2)列出类型所能执行的操作,不要忘了初始化(构造 ...

  4. android 学习(1)

    第二次发生这种事了,写完啦,手一抖,丢了,这个写完不用博客园了,怪不得用户越来越少 简写 androidstudio安装注意点 1JDK安装需配置环境变量 2安装遇到haxm错误需要进入BIOS打开C ...

  5. oracle根据分隔符将字符串分割成数组函数

    --创建表类型 create or replace type mytype as table of number;--如果定义成varchar--CREATE OR REPLACE type myty ...

  6. js 模块开发之一(模块开发价值)

    首先引用我们的今天的主角 ----<前端模块化开发的价值> 1,前端开发最常见的两个问题 ---命名冲突和文件依赖 2,对于命名冲突的基本解决办法就是学习其他语言的习惯,添加命名空间 va ...

  7. Web页面多对象多文档事件冲突的解决方案

    这段时间写了很多基于js和jquery的前端控件,每一个的功能都很复杂,事件也很多. 因为都是单独封装的,单独使用没有问题,但把他们放到一个页面使用,就经常发生事件冲突的问题. 这几天一直在考虑用一个 ...

  8. hdu 2669 Romantic (乘法逆元)

    Romantic Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. Block的copy和循环引用的问题

    在实际开发中,发现使用Block有着比delegate和notification更简洁的优势.于是在目前的项目中大量的使用block. 在我的头文件我是这样声明使用block的. 我将block声明为 ...

  10. C# 使用js正则表达式,让文本框只能输入数字和字母,最大长度5位

    使用js正则表达式,让文本框只能输入数字和字母,最大长度5位,只需要加个onkeyup事件,即可简单实现 <asp:TextBox ID="txtBegin" runat=& ...