2009-04-08 2 views
3

대화 상자가 나타나고 연결된 핸들러가 없을 때마다 대화 상자가 자동으로 닫힙니다. 이는 응용 프로그램이 가질 수있는 여러 가지 간단한 확인을위한 코드를 추가하고 싶지 않을 때 유용합니다.대화 상자가 나타 났을 때 기본적으로 테스트가 실패하는 방법

이 기본 동작을 사용하면 단순한 문제가 나타나지 않아야하는 시나리오에 나타나는 확인 대화 상자와 같이 눈에 띄지 않는 문제가 발생할 수 있습니다.

처리되지 않은 대화 상자가 나타나면 테스트를 정상적으로 실패하는 간단한 방법을 찾고 있습니다. 정상적으로는 대화 상자에 예기치 않은 대화 상자 오류가 있음을 알리는 알맞은 메시지를 표시하여 테스트가 중지되는 것을 의미합니다.

답변

3

또 다른 옵션으로 AlertAndConfirmDialogHandler를 사용할 수 있습니다. 이 핸들러는 모든 경고를 닫거나 팝업 대화 상자를 확인하지만 먼저 대화 상자에 표시된 텍스트를 가져 와서 저장합니다. 이 경고 문자열 배열을 검사하여 개수가 0인지 확인할 수 있습니다. 테스트 수업의 Teardown 또는 FixtureTeardown에서이 작업을 수행 할 수 있습니다. 이 핸들러를 사용하는 방법을 표시하는 WatiN 유닛 테스트에서 테스트의 복사본을 다음

:

 [Test] 
    public void AlertAndConfirmDialogHandler() 
    { 
     DialogWatcher dialogWatcher; 

     Assert.AreEqual(0, Ie.DialogWatcher.Count, "DialogWatcher count should be zero before test"); 

     // Create handler for Alert and confirm dialogs and register it. 
     var dialogHandler = new AlertAndConfirmDialogHandler(); 
     using (new UseDialogOnce(Ie.DialogWatcher, dialogHandler)) 
     { 
      Assert.AreEqual(0, dialogHandler.Count); 

      Ie.Button("helloid").Click(); 

      Assert.AreEqual(1, dialogHandler.Count); 
      Assert.AreEqual("hello", dialogHandler.Alerts[0]); 

      // remove the alert text from the queue by using Pop 
      Assert.AreEqual("hello", dialogHandler.Pop()); 

      Assert.AreEqual(0, dialogHandler.Count); 

      // Clear the queue 
      Ie.Button("helloid").Click(); 

      Assert.AreEqual(1, dialogHandler.Count); 

      dialogHandler.Clear(); 

      Assert.AreEqual(0, dialogHandler.Count); 

      dialogWatcher = Ie.DialogWatcher; 
     } 

     Assert.AreEqual(0, dialogWatcher.Count, "DialogWatcher count should be zero after test"); 
    } 

이것은 또한 나를 자동 종료 동작은 더 플러그 수 있도록 트리거합니다. 대화 상자를 자동으로 닫는 대신 다른 핸들러가 대화 상자를 처리 할 수없는 경우 호출 할 대화 상자 핸들러를 등록 할 수 있다면 좋을 것입니다.

HTH 제론 반 Menen 리드 dev에 WatiN 내가이 방법으로 문제를 직면하고

+0

, 그것은 언젠가 작동하고 때로는하지 않습니다. – rahoolm

1

지금 우리가 사용하고 있습니다 : 그것은 다음 (추한) 문제가있다

browser.DialogWatcher.CloseUnhandledDialogs = false 

: 인터넷 동안 ("시간 초과 메시지를

  1. 오류가 다음 작업의 제한 시간으로 표시 사용 Explorer busy ").
  2. 위의 이유로 테스트에 불필요한 지연이 있습니다.
  3. 예기치 않은 팝업이있는 인스턴스는 (처리 후) 열어 둡니다.