2012-05-14 2 views
1

대화 상자에 로그인 자격 증명을 입력하는 동작을 기록한 다음 UImap1.uitests에서이 Submit()를 호출합니다. 내가 수동으로 CodedUI 테스트 클래스 내에서 ClassInitialize와 decorded 방법에서 응용 프로그램을 실행하면 다음과 같이 이제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)); 
    } 

: 자동 생성 된 코드는 다음과 같이 보일 것입니다

 [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: 

TIA :

enter image description here

이것은 또한 스택 추적입니다.

답변

3

테스트 메소드 외부에서 CodedUI를 사용하려면 재생 엔진을 초기화해야합니다. 프레임 워크는 testinitalize/cleanup 메소드에서 재생/정리를 자동으로 초기화하므로 거기에 표시되지 않습니다.

테스트 시작 전에 ClassInitialize/AssemblyInitialize가 발생하므로 Playback.Initialize()를 호출해야합니다.

+0

대단히 감사합니다. 여기에 고통을 덜어 줬어. –

관련 문제