如何在现有录制的第二个UImap中生成代码

时间:2012-11-08 09:34:05

标签: coded-ui-tests

我是encodeUI的新手,一开始我正在阅读很多应该是最佳实践的内容。 我已经读过,如果您使用的是建议使用多个UImaps的复杂应用程序。虽然我现在看不到一个好处,但是我用两个UImaps创建了一个小项目。

在第一个初始设置中(使用初始UImap和CodedUITest1),我可以选择是使用“测试”构建器还是使用现有操作记录来生成代码。我做了什么'去'到初始的UImap。当我创建新UI时,启动测试构建器并且我可以记录一些操作,当我保存它时,它会被添加到我创建的新设置的UImap中,名为AdvanceSettings。但我无法从现有录音中生成代码。这是为什么?我想基于带有录音的手动测试案例创建自动化测试用例。

以下是我的代码。我正在为两个UImaps使用CodedUITest1类。我应该使用新课吗? 每个UImap?

如果您对代码有一些评论,请写一些。

我看到了。如果您有复杂的应用程序,则使用多个UImaps,以便您可以更轻松地更改某些内容。每个GUI元素都有一个UImap,因此如果GUI上的某些内容发生变化,您只需编辑该UImap。但是如果你有一个UImap并使用正确的命名,你也可以轻松地替换或重新记录某些方法。所以我错过了多个UImaps的大图。

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Windows.Input;
using System.Windows.Forms;
using System.Drawing;
using Microsoft.VisualStudio.TestTools.UITesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UITest.Extension;
using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard;
using EAEP.AdvanceSettingsClasses;

namespace EAEP
{
    /// <summary>
    /// Summary description for CodedUITest1
    /// </summary>
    [CodedUITest]
    public class CodedUITest1
    {
        public CodedUITest1()
        {
        }

        [TestInitialize]
        public void InitializationForTest()
        {

            this.UIMap.AppLaunch();

        }

        [TestMethod]
        public void MainGUIMethod()
        {
            // 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.AssertMethod1();
            this.UIMap.RestoreDefaults();
            this.UIMap.AssertMethod1();

            }

        [TestMethod]
        public void AdvanceSettignsWindowMethod()
        {

            AdvanceSettings advanceSettings = new AdvanceSettings();

            advanceSettings.MoreSettingsReopenedAfterCancel();
            this.UIMap.AssertVerificationAfterCancel();
            advanceSettings.MoreSettingsReopenedAfterOK();
            this.UIMap.AssertVerificationAfterOK();

        }

        #region Additional test attributes

        // You can use the following additional attributes as you write your tests:

        ////Use TestInitialize to run code before running each test 
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{        
        //    // 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
        //}

        ////Use TestCleanup to run code after each test has run
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{        
        //    // 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
        //}

        #endregion


        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }
        private TestContext testContextInstance;

        public UIMap UIMap
        {
            get
            {
                if ((this.map == null))
                {
                    this.map = new UIMap();
                }

                return this.map;
            }
        }

        private UIMap map;
    }
}

2 个答案:

答案 0 :(得分:0)

  1. 拥有多个UIMaps可加快测试执行速度。此外,这使得版本,断言,属性和设置变得更加容易。

  2. 要为第二个UIMap创建测试,只需右键单击它并按“使用编码的UI测试生成器编辑”

  3. 关于But I can not generate code from existing recording. Why is that?我不知道 - 你是什么意思can not

答案 1 :(得分:0)

您不能将多个UI地图与现有录制功能结合使用。此功能始终在名为UIMap的地图中生成代码。我在关于将specflow与Coded Ui测试集成的博客文章中解释了一些关于这些限制的内容

http://rburnham.wordpress.com/2011/05/30/record-your-coded-ui-test-methods/

如果您想使用Multiple UIMaps以获得更好的可维护性,则必须使用此方法

  1. 通过右键单击UIMap并选择Coded UI Test Builder来单独记录每个操作。
  2. 通过创建空白的编码UI测试手动将测试连接到操作,更新它引用的UIMap,然后在测试方法中调用执行测试所需的操作。
  3. 它的局限性使得MTM集成的优点毫无意义。