在VS中可创建“编码的UI測试”。可录制软件操作,再回放,最后还能够脱离VS独立执行。

在VS中执行測试

创建项目codeuitest,控件布局。例如以下图:

在button单击事件下加入代码:

if (string.IsNullOrEmpty(this.textBox1.Text))
{
MessageBox.Show("请输入您的姓名。");
}
else
{
MessageBox.Show(string.Format("Hello \"{0}\"!", this.textBox1.Text));
}

在“測试”下单击“创建測试”菜单。选择“编码的UI測试”模版,设置项目名称。(和VS2013相比。真心喜欢VS2010这样的创建測试项目的方法)

选择通过录制来生成UI编码。

录制

当目标窗口上出现VS图标时,可開始操作

停止录制。并生成代码

在“測试结果”视图下可看到測试状态

脱离VS。独立执行UI測试

创建项目CodeUITestExe并增加到CodeUITest解决方式中。效果图例如以下:

加入对Microsoft.VisualStudio.QualityTools.UnitTestFramework、Microsoft.VisualStudio.TestTools.UITest.Common、Microsoft.VisualStudio.TestTools.UITest.Extension、Microsoft.VisualStudio.TestTools.UITesting及CodeUiTest、TestProject1项目的引用。

CodeUITestExe.Form1.cs代码例如以下:

using TestProject1;

namespace CodeUITestExe
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
TestProject1.TestInit.Init();
TestProject1.CodedUITest1 test = new TestProject1.CodedUITest1();
test.CodedUITestMethod1();
TestProject1.TestInit.Cleanup();
}
}
}

在TestProject1中创建类TestInit.cs其代码例如以下:

using Microsoft.VisualStudio.TestTools.UITesting;

namespace TestProject1
{
public class TestInit
{
public static void Init()
{
if (!Playback.IsInitialized)
{
Playback.Initialize();
}
} public static void Cleanup()
{
if (Playback.IsInitialized)
{
Playback.Cleanup();
}
}
}
}

编译解决方式。先打开CodeUITest.exe,再打开CodeUITestExe.exe,运行測试时当出现找不到dll时,可将C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies下的Microsoft.VisualStudio.TestTools.UITest为前缀的dll拷贝到Debug下。

当将程序代码拷贝到其它电脑时,运行測试时会提示“Cannot perform ” on the control”错误,继续查找错误会发现“ CLSID {6DA215C2-D80D-42F2-A514-B44A16DCBAAA} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).”。究其原因是缺少了Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.dll文件。

将"C:\Program
Files\Common Files\microsoft shared\VSTT\10.0"下的此文件拷贝到Debug下,并通过regsvr32运行注冊,请确保以管理员身份打开命令提示符运行注冊。

演示实例源代码,点击下载

CodedUI自己主动化測试及脱离VS独立执行的更多相关文章

  1. 带有机器人框架的.NET自己主动化測试

    Clayton Neal在软件測试和质量保证方面有超过13年的经验,当中有八年的Windows, web,和移动应用程序的測试自己主动化经验.他在測试领域的全部等级都工作过.近期他在Bloomberg ...

  2. Android自己主动化測试解决方式

    如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...

  3. Android自己主动化測试之Monkeyrunner用法及实例

    眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...

  4. MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...

  5. Android Monkey自己主动化測试

    前言 假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题.起码能帮你省点測试的时间而且发现很多其它的问题. Monkey简单 ...

  6. iOS自己主动化測试的那些干货

    前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...

  7. Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)

    我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...

  8. 基于QTP的自己主动化測试框架介绍

    继前面用了七章介绍了基于QTP的自己主动化測试框架,以下再用几个视频再补充一下.        视频一:基本框架特点介绍说明 .框架的特点从正反两面进行了分析以及主要思想      http://v. ...

  9. Selenium2 Python 自己主动化測试实战学习笔记(五)

    7.1 自己主动化測试用例 无论是功能測试.性能測试和自己主动化測试时都须要编写測试用例,測试用例的好坏能准确的体现了測试人员的经验.能力以及对项目的深度理解. 7.1.1 手工測试用例与自己主动化測 ...

随机推荐

  1. 创业笔记-Node.js入门之一个完整的基于Node.js的web应用

    用例 我们来把目标设定得简单点,不过也要够实际才行: 用户可以通过浏览器使用我们的应用. 当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 用户可 ...

  2. HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException

    HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException type ...

  3. php设计模式适配器模式

    php设计模式适配器模式 简介 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的.一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起. 其实就是通过一个转换类,这个转 ...

  4. 官方文档 Upgrading Elasticsearch

    Upgrading Elasticsearch Before upgrading Elasticsearch: Consult the breaking changes docs. Use the E ...

  5. SPOJ 694/705 后缀数组

    思路: 论文题*n Σn-i-ht[i]+1 就是结果 O(n)搞定~ //By SiriusRen #include <cstdio> #include <cstring> ...

  6. Kali linux 2016.2(Rolling)的利用MSF攻击windows小案例(exploits + payloads + taegets)(博主推荐)

    不多说,直接上干货! 本博文举的例,是利用远程溢出windows服务器. Exploit/windows/smb/ms08_067_netapi. Payload :    windows/shell ...

  7. Pharmaceutical的同学们都看过来,关于补码运算的复习相关内容

    虽然是全英文的课程,这次总结内容不用英文了. 一般在计算机原理中,对两个操作数进行运算会使用C作为进位的标志位,而V作为溢出的标志位. 一般我们学完计算机原理,都知道正数的原码反码补码都一样,而问题都 ...

  8. (转载) Android两个子线程之间通信

    Android两个子线程之间通信 标签: classthreadandroid子线程通信 2015-03-20 17:03 3239人阅读 评论(0) 收藏 举报  分类: 个人杂谈 版权声明:本文为 ...

  9. 机器学习(十一) 支持向量机 SVM(上)

    一.什么是支撑向量机SVM (Support Vector Machine) SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法.在机器学习领域,是一个有监督 ...

  10. JDOJ 2785: 商之和 数论分块

    Code: #include <iostream> #include <cstdio> #define setIO(s) freopen(s".in",&q ...