2

私はcodedUIを初めて使用し、最初にベストプラクティスとは何かについて多くのことを読んでいます。複雑なアプリケーションを使用している場合は、複数の UImap を使用することをお勧めします。現時点では利点はわかりませんが、2 つの UImap を使用して小さなプロジェクトを作成しました。

最初の初期セットアップ (初期 UImap と CodedUITest1 を使用) では、テスト ビルダーを使用するか、既存のアクション レコーディングを使用してコードを生成するかを選択できます。私が何をしても、最初のUImapに「行きます」。新しい UI を作成すると、テスト ビルダーが開始され、いくつかのアクションを記録できます。それを保存すると、私の場合は AdvanceSettings と呼ばれる新しく作成された UImap に追加されます。しかし、既存の記録からコードを生成することはできません。何故ですか?記録のある手動テスト ケースに基づいて、自動テスト ケースを作成したいと考えています。

以下は私のコードです。両方の UImap に CodedUITest1 クラスを使用しています。すべての UImap に新しいクラスを使用する必要がありますか?

コードに関するコメントがある場合は、いくつか書いてください。

私の考えでは。複雑なアプリケーションの場合は、複数の UImap が使用されるため、何かをより簡単に変更できます。すべての GUI 要素には 1 つの UImap があるため、その GUI で何かが変更された場合は、その UImap のみを編集します。ただし、UImap が 1 つあり、適切な名前を付ければ、特定のメソッドを簡単に置き換えたり、再記録したりすることもできます。そのため、複数の UImap を含む全体像がありません。

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;
    }
}
4

2 に答える 2

0

既存の記録機能から複数のUIマップを使用することはできません。この機能は常にUIMapと呼ばれるマップにコードを生成します。スペックフローとコード化されたUIテストの統合について行ったブログ投稿で、これらの制限について少し説明しました。

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

保守性を高めるために複数のUIMapを使用する場合は、この方法を使用する必要があります

  1. UIMapを右クリックし、Coded UI Test Builderを選択して、各アクションを個別に記録します。
  2. 空白のコード化されたUIテストを作成してテストをアクションに手動で接続し、参照するUIMapを更新してから、テストメソッドで必要なアクションを呼び出してテストを実行します。

MTM統合の良いところを無意味にする制限があります。

于 2012-11-09T06:51:15.827 に答える
0
  1. 複数の UIMap を使用すると、テストの実行が高速化されます。さらに、これにより、エディション、アサーション、プロパティ、および設定がはるかに簡単になります。

  2. 2 番目の UIMap のテストを作成するには、それを右クリックして [コード化された UI テスト ビルダーで編集] をクリックします。

私には手がかりBut I can not generate code from existing recording. Why is that?がありません - とはどういう意味can notですか?

于 2012-11-08T13:26:53.680 に答える