2012-05-14 89 views
1

如果我记录要在登录凭据中输入对话框的操作,并在UImap1.uitests中调用此Submit()。自动生成的代码会是这个样子:WPF CodedUI测试:以编程方式启动应用程序

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 decorded的方法下的应用程序如下:

 [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); 
     } 

为什么我如下所示得到下面的空例外?

enter image description here

这也是堆栈跟踪:

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。

回答

3

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

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

+0

非常感谢。在这里给我节省了一些痛苦。 –

相关问题