다음을 통해 공유


코딩된 UI 테스트가 재생 중 특정 이벤트를 기다리도록 지정

코딩된 UI 테스트 재생 시 창이 나타나거나 진행률 표시줄이 사라지는 등의 특정 이벤트가 발생할 때까지 테스트가 대기하도록 지정할 수 있습니다.이렇게 하려면 다음 표에 설명된 것과 같이 적절한 UITestControl.WaitForControlXXX() 메서드를 사용합니다.WaitForControlEnabled 메서드를 사용하여 컨트롤이 활성화될 때까지 대기하는 코딩된 UI 테스트의 예제는 연습: 코딩된 UI 테스트 만들기, 편집 및 유지 관리를 참조하십시오.

요구 사항

  • Visual Studio Ultimate, Visual Studio Premium
팁

코딩 된 UI 테스트 편집기를 사용 하 여 작업 하기 전에 지연을 추가할 수도 있습니다.자세한 내용은 방법: 코딩된 UI 테스트 편집기를 사용하여 UI 작업 전에 지연 삽입을 참조하십시오.

UITestControl.WaitForControlXXX() 메서드

UITestControl.WaitForControlXXX() 메서드

설명

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlReady ]

컨트롤이 마우스 및 키보드 입력을 받아들일 준비가 될 때까지 대기합니다.엔진에서는 작업을 수행하기 전에 모든 동작이 컨트롤이 준비 상태가 될 때까지 대기하도록 이 API를 암시적으로 호출합니다.그러나 일부 복잡한 시나리오에서는 명시적 호출을 수행해야 합니다.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlEnabled ]

마법사가 서버에 대한 호출을 수행하여 입력 내용에 대한 비동기 유효성 검사를 수행하고 있는 경우 컨트롤이 활성화될 때까지 대기합니다.예를 들어 이 메서드를 사용하여 마법사의 다음 단추가 활성화될 때까지 대기할 수 있습니다.이 메서드의 예제는 연습: 코딩된 UI 테스트 만들기, 편집 및 유지 관리를 참조하십시오.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlExist ]

컨트롤이 UI에 나타날 때까지 대기합니다.예를 들어 응용 프로그램이 매개 변수의 유효성 검사를 완료한 후에 오류 대화 상자가 나타날 것으로 예상하며유효성 검사에 소요되는 시간이 가변적인 경우,이 메서드를 사용하여 오류 대화 상자가 나타날 때까지 대기할 수 있습니다.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlNotExist ]

컨트롤을 UI에서 사라질 때까지 기다립니다.예를 들어 진행률 표시줄이 사라질 때까지 대기할 수 있습니다.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyEqual(System.String,System.Object) ]

컨트롤의 지정된 속성이 특정 값을 갖게 될 때까지 대기합니다.예를 들어 상태 텍스트가 완료로 변경될 때까지 대기할 수 있습니다.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyNotEqual(System.String,System.Object) ]

컨트롤의 지정된 속성이 지정된 값과 반대의 값을 갖게 될 때까지 대기합니다.예를 들어 입력란이 읽기 전용이 아니어서 편집 가능하게 될 때까지 대기할 수 있습니다.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlCondition(System.Predicate{Microsoft.VisualStudio.TestTools.UITesting.UITestControl}) ]

지정된 조건자가 true를 반환할 때까지 대기합니다.특정 컨트롤에 대한 OR 조건과 같은 복잡한 대기 작업에 이 메서드를 사용할 수 있습니다.예를 들어 다음 코드와 같이 상태 텍스트가 성공 또는 실패가 될 때까지 대기할 수 있습니다.

// Define the method to evaluate the condition 
private static bool IsStatusDone(UITestControl control) 
{ 
    WinText statusText = control as WinText; 
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed"; 
} 
// In test method, wait till the method evaluates to true 
statusText.WaitForControlCondition(IsStatusDone);

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForCondition``1(``0,System.Predicate{``0}) ]

앞의 모든 메서드는 UITestControl의 인스턴스 메서드인 반면,이 메서드는 정적 메서드입니다.이 메서드도 지정된 조건자가 true가 될 때까지 대기하지만 이 메서드는 여러 컨트롤에 대한 OR 조건과 같은 복잡한 대기 작업에 사용할 수 있습니다.예를 들어 다음 코드와 같이 상태 텍스트가 성공이 되거나 오류 메시지가 나타날 때까지 대기할 수 있습니다.

// Define the method to evaluate the condition 
private static bool IsStatusDoneOrError(UITestControl[] controls) 
{ 
    WinText statusText = controls[0] as WinText; 
    WinWindow errorDialog = controls[1] as WinWindow; 
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists; 
} 
// In test method, wait till the method evaluates to true 
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError); 

이러한 메서드는 모두 다음과 같이 동작합니다.

  • 메서드가 반환하는 값은 대기에 성공할 경우 true이고 실패할 경우 false입니다.

  • 대기 작업의 암시적 제한 시간은 WaitForReadyTimeout 속성으로 지정됩니다.이 속성의 기본값은 60,000밀리초(1분)입니다.

  • 메서드에는 밀리초 단위의 명시적 제한 시간을 적용하기 위한 오버로드가 있습니다.그러나 대기 작업으로 인해 암시적으로 컨트롤이 검색되거나 응용 프로그램이 사용 중일 경우 실제 대기 시간은 지정된 제한 시간보다 길어질 수 있습니다.

앞의 기능은 강력하고 유연하며, 거의 모든 조건을 충족해야 합니다.그러나 이러한 메서드가 필요에 맞지 않고 코드에서 Wait 또는 Sleep을 코딩해야 하는 경우에는 Thread.Sleep() API 대신 Playback.Wait()를 사용하는 것이 좋습니다.그 이유는 다음과 같습니다.

  • 사용할 수 있는 ThinkTimeMultiplier대기 시간을 수정할 수 있는 속성.기본적으로 이 변수는 1이지만 값을 늘리거나 줄여 전체 코드에 대해 대기 시간을 변경할 수 있습니다.예를 들어 느린 네트워크나 그 밖의 느린 성능 문제에 대해 테스트하는 경우, 한 위치에서(또는 구성 파일에서) 이 변수를 1.5로 변경하여 모든 위치에서 대기 시간을 50% 더 늘릴 수 있습니다.

  • 위의 계산이 완료된 후 Playback.Wait()는 사용자 취소/중단 작업을 확인하는 동안 for-loop의 보다 작은 청크에서 Thread.Sleep()을 내부적으로 호출합니다.즉, Playback.Wait()를 사용하면 대기가 끝나기 전에 재생을 취소할 수 있는 반면 Sleep에서는 그럴 수 없으며 재생을 취소하면 예외가 throw됩니다.

팁

코딩된 UI 테스트 편집기를 사용하면 코딩된 UI 테스트를 쉽게 수정할 수 있습니다.코딩된 UI 테스트 편집기를 사용하여 테스트 메서드를 찾아서 보고 편집할 수 있습니다.UI 컨트롤 맵에서 UI 작업 및 관련 컨트롤을 편집할 수도 있습니다.자세한 내용은 코딩된 UI 테스트 편집기를 사용하여 코딩된 UI 테스트 편집을 참조하십시오.

지침

자세한 내용은 Visual Studio 2012 5 장 연속 배달 테스트: 자동화 시스템 테스트

참고 항목

작업

연습: 코딩된 UI 테스트 만들기, 편집 및 유지 관리

방법: 코딩된 UI 테스트 편집기를 사용하여 UI 작업 전에 지연 삽입

개념

코딩된 사용자 인터페이스 테스트를 사용하여 코드 확인

코딩된 UI 테스트 분석

코딩된 UI 테스트 및 작업 기록에 지원되는 구성 및 플랫폼

기타 리소스

코딩 된 UI 테스트 만들기