Coded UI Test(三)理解生成的代码

还是沿用上一次的列子(验证当前系统是不是WinXP),其解决方案的窗口如下:

如何所示,在"TestProject1"项目下的四个文件都是由工具自动生成:

文件 描述 VS是否支持编辑
CodedUITest1.cs 这个文件的默认名是"CodedUITest1.cs",存放着所有测试方法。 支持编辑
UIMap.uitest 这个文件其实是个XML文件,存放着所有测试动作、对象、数据的信息。 目前不支持编辑,不过将来可能会有一个专门的编辑器。
UIMap.Designer.cs 这个文件其实是通过UIMap.uitest的内容生成而来。 不支持编辑,每次对CodeUITest进行编辑和生成代码动作后,此文件都会被覆盖,之前人为手动的修改将会丢失。

UIMap.cs

这个文件是"UIMap.Designer.cs"的部分类,所有自定义的修改可以编辑在它里面。 支持编辑

在"UIMap.Designer.cs"文件中生成了四个类:

描述 例子中的代码
UIMap 这是一个主要的类,存放着大多数的测试逻辑 UIMap
UI控件类 这些类代表了测试过程中用到的每一个UI控件,每个类中包含了所代表控件的被定义过的一些属性金和其子控件的信息。 UIProgramManagerWindow、UIItemWindow、UI系统属性Window
Recorded/Assert方法参数类 针对每一个Recorded或Assert方法,都会生成一个参数类,用去存放测试过程中用到的参数 AssertMethod1ExpectedValues

前面说到"UIMap.uitest"文件VS并不支持编辑,不过既然其本质是一个XML文件,那我们就可以利用XML Edit进行查看甚至编辑,先让我们观察下例子中的"UIMap.uitest"文件:

其中最主要的一个节点就是"<ExecuteActions>",存放着所有的测试步骤。在这里例子中,首先是两个MouseAction,其分别是指鼠标右击"我的电脑"和鼠标左击"属性"。之后是一个TestStepMarkerAction,它意味创建一个方法来包含之前的动作(这里就是包含之前两个MouseAction),并取方法名为"RecordedMethod1"。再之后是一个AssertAction,它意味了一次验证动作,这里就是验证"Microsoft Windows XP"。最后又是一个TestStepMarkerAction,这个动作和之前类似,创建一个方法来包含只来的动作(这里是一个AssertAction),并取方法名为"AssertAction1"。
还有一个重要的节点就是"<Maps>",所有的UI控件对象都定义在这个节点内,以树状的形式排列。

比如在上一节中,我们是直接在Designer.cs文件中将验证的值由"Microsoft Windows XP"改成"Microsoft Windows 7",来实现我们想验证当前系统是不是Win7的目的。不过要是之后再次编辑CodedUITest和生成代码,Designer.cs的文件内容又再次被uitest文件内容所覆盖,之前的修改就会丢失。所以最好的方法是直接在uitest文件中进行彻底地修改,要完成相同的功能,只需打开"<ExecuteActions>-><AssertAction>",进行相应的编辑就可以了,如下图:

总而言之,所有的录制功能其实就是为了生成uitest文件,直接修改uitest文件可以达到跟录制脚本一模一样的效果,比如在uitest文件中删除一些动作,就好比之前就没有录制过这些动作一样,再次编辑和生成代码后将不会生成相关的代码。

原文地址:https://www.cnblogs.com/lenshen/p/2534276.html