WPF CodedUI测试:以编程方式启动应用程序

WPF CodedUI测试:以编程方式启动应用程序,wpf,coded-ui-tests,Wpf,Coded Ui Tests,如果我记录了在对话框中输入登录凭据的操作,并在UImap1.uitests中调用此提交。自动生成的代码如下所示: public void Launch() { #region Variable Declarations WpfEdit uIUsernameBoxEdit = this.UIOCC600OILoginWindow.UIUsernameBoxEdit; WpfEdit uIPasswordBoxEdit = this.UIOC

如果我记录了在对话框中输入登录凭据的操作,并在UImap1.uitests中调用此提交。自动生成的代码如下所示:

 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);
        }
为什么我会得到如下所示的空异常

这也是堆栈跟踪:

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: 

TIA。

您需要初始化回放引擎,以便在测试方法之外使用CodedUI。该框架会自动初始化testinitialize/cleanup方法中的播放/清理,因此您不会在其中看到它


ClassInitialize/AssemblyInitialize发生在任何测试开始之前,因此您必须调用Playback.Initialize。

您需要初始化播放引擎,以便在测试方法之外使用CodedUI。该框架会自动初始化testinitialize/cleanup方法中的播放/清理,因此您不会在其中看到它


ClassInitialize/AssemblyInitialize发生在任何测试开始之前,因此您必须调用Playback.Initialize。

非常感谢。帮我省去了一些痛苦。非常感谢。这帮我省去了一些痛苦。