2

ダイアログにログイン資格情報を入力するアクションを記録し、UImap1.uitests でこの Submit() を呼び出すとします。自動生成されたコードは次のようになります。

 public void Launch()
    {
        #region Variable Declarations
        WpfEdit uIUsernameBoxEdit = this.UIOCC600OILoginWindow.UIUsernameBoxEdit;
        WpfEdit uIPasswordBoxEdit = this.UIOCC600OILoginWindow.UIPasswordBoxEdit;
        WpfButton uIOKButton = this.UIOCC600OILoginWindow.UIOKButton;
        #endregion

        // Type 'username' in 'usernameBox' text box
        uIUsernameBoxEdit.Text = this.LaunchParams.UIUsernameBoxEditText;

        // Click 'passwordBox' text box
        Mouse.Click(uIPasswordBoxEdit, new Point(63, 13));

        // Type '********' in 'passwordBox' text box
        Keyboard.SendKeys(uIPasswordBoxEdit, this.LaunchParams.UIPasswordBoxEditSendKeys, true);

        // Click 'OK' button
        Mouse.Click(uIOKButton, new Point(33, 14));
    }

ここで、次のように CodedUI テスト クラスで ClassInitialize でデコードされたメソッドでアプリケーションを手動で起動するとします。

      [ClassInitialize()]
        public static void MyTestInitialize(TestContext context)
        {
           Process.Start(@"C:\Program Files (x86)\MyCompany\MyApp.exe");
            Playback.Wait(2000);

            var uimap = new LaunchApplicationMap();
            var loginParams = uimap.EnterLoginCredentialsParams;
            loginParams.UIUsernameBoxEditText = "username";
            loginParams.UIPasswordBoxEditSendKeys = Playback.EncryptText("password
");
            uimap.Launch();
            Playback.Wait(5000);
        }

以下に示すように、次の null 例外が発生するのはなぜですか?

ここに画像の説明を入力

これもスタック トレースです。

System.NullReferenceException was unhandled by user code
  Message=Object reference not set to an instance of an object.
  Source=Microsoft.VisualStudio.TestTools.UITest.Framework
  StackTrace:
       at Microsoft.VisualStudio.TestTools.UITest.Framework.UITestService.TechnologyManagerByName(String technologyName)
       at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.ValidateSearchProperties()
       at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindInternal()
       at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindControlIfNecessary()
       at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty(String propertyName, Object value)
       at Microsoft.VisualStudio.TestTools.UITesting.WpfControls.WpfEdit.set_Text(String value)
       at UITests.UIMaps.LaunchApplicationMapClasses.LaunchApplicationMap.Launch() in C:\dev\OCC600\Source - Copy\Tests\UITests\UIMaps\LaunchApplicationMap.Designer.cs:line 44
       at UITests.LogsViewTests.MyTestInitialize(TestContext context) in C:\dev\OCC600\Source - Copy\Tests\UITests\LogsViewTests.cs:line 70
  InnerException: 

ティア。

4

1 に答える 1

4

You need to initialize the playback engine to use CodedUI outside of a test method. The framework automatically initializes playback/cleanup in the testinitalize/cleanup methods so you don't see it in there.

ClassInitialize/AssemblyInitialize happen before any tests begin so you have to call Playback.Initialize().

于 2012-05-15T04:50:34.307 に答える