回顾
在本章上部分介绍了操作动作的录制原理,描述了操作动作是如何录制,UIMap.uitest和UIMap.Designer.cs的代码如何生成,以及他们的结构。在这个部分,将着重说明如何通过修改UIMap1.uitest文件的操作动作部分的代码来控制UIMap1.Designer.cs操作动作部分代码的生成,实现第一种方式的自定义编码。
内容简介
在上个部分,已经说明了UIMap.uitest文件的结构如下
其中InitializeActions,ExecuteActions,CleanupActions,OnErrorAction都是对于操作动作的描述:
InitializeActions:指初始化需要执行的操作动作
ExecuteActions:指测试过程中的操作动作(通过录制所生成的操作都默认放在ExecuteActions)
CleanupActions:指测试完毕需要清理资源的操作动作
OnErrorAction:指代异常处理的操作动作
他们都对UIMap1.Designer.cs操作动作部分代码的生成和参数的生成有直接的影响。
严格的说,放在InitializeActions下的操作动作和放在ExecuteActions,CleanupActions,OnErrorAction的动作没有任何本质上的区别,仅仅只是从一个代码可读性上的考虑
编码的UI测试所支持的Actions
如果我们仔细观察过ExecuteActions录制所生成的代码,可以发现有一个共同特点,ExecuteActions的子节点都是以<Action>结尾形式的标签,那么编码的UI测试一共支持多少种的Action呢?这里我整理了一个列表,简单的介绍了测试所支持的Action和功能简介
在这里将抽取几个主要的ACTION进行介绍.
通过编写UIMap.uitest文件控制UIMap.designer.cs代码的生成
1.首先我们还是通过添加新项的方式建立一个新的Coded UI Test Map(编码的UI测试映射)
2.之后,直接进入UIMap1.uitest文件,可以发现代码如下
1<?xml version="1.0"?>
2
3<UITestxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"Name=""Id="3efe829a-76df-439e-af0d-8d5c62727a1e"AssemblyVersion="10.0.21008.0"Version="1.0"xmlns="http://schemas.microsoft.com/VisualStudio/TeamTest/UITest/2010">
4
5</UITest>
6
7
3.关闭录制生成器(注:一定要先关闭才能修改,以后也是一样),编码初始化代码InitializeActions
我们还是先使用第一章提到的示例程序下载点我
假设现在如果要操作它,首先需要将其打开,在之前已经简单介绍过编码的UI测试支持的Action,可以把打开这个程序的操作作为InitializeActions(初始化操作)的一员,并为其生成一个方法,那么按照这个思路,在参照前面的Actions列表,可以发现需要两个Action
a.LaunchApplicationAction打开应用程序
b.TestStepMarkerAction为该步骤生成一个方法
现在我们开始编写代码,将其直接插入UITest节点内
1<InitializeActions>
2
3<!—打开示例文件,文件路径按实际情况填写-->
4
5<LaunchApplicationAction>
6
7<FileName>D:\RightDemo.exe</FileName>
8
9</LaunchApplicationAction>
10
11
12
13<!--为之前所有的操作步骤生成¦一个方法,名称为LaunchApplication()-->
14
15<TestStepMarkerActionMarkerInformation="LaunchApplication">
16
17<ParameterName/>
18
19<StepId>-1</StepId>
20
21<Direction>Start</Direction>
22
23<Outcome/>
24
25<Disabled>false</Disabled>
26
27</TestStepMarkerAction>
28
29</InitializeActions>
30
31
编写之后,我们打开录制生成器,点击“生成代码”,可以发现在UIMap1.Designer.cs对应生成了几句代码,其中已经按照要求生成了LaunchApplication()方法和加载应用程序的语句ApplicationUnderTest.Launch(this.LaunchApplicationParams.ExePath, this.LaunchApplicationParams.AlternateExePath),语句如下
1///<summary>
2///LaunchApplication - Use 'LaunchApplicationParams' to pass parameters into this method.
3///</summary>
4publicvoidLaunchApplication()