2011-05-30 2 views
3

В настоящее время я переношу свои UI-тесты в CodedUI Tests. Прямо сейчас, я сталкиваюсь со следующей проблемой:Проблема с кодированным пользовательским интерфейсом и MessageBox - критерии поиска

В моем модуле UnitTest я вызываю метод, расположенный в моем UIMap дважды. Метод содержит фрагмент, который проверяет, открыто ли окно MessageBox и имеет логический параметр, который переключает, следует ли нажать кнопку подтверждения или отмены в окне сообщений. Messagebox никогда не изменяется (это означает его название, текст, кнопки).

public void MyUiMethod(bool p) 
{ 
    //...variable initialization... 
    ApplicationUnderTest app = ApplicationUnderTest.Launch(@"some.exe"); 
    try 
    { 
     //... get to the point that triggers the MB to show... 
     Assert.AreEqual(true, uImessageBoxWindow.Exists); 
     if (p) 
      Mouse.Click(uIConfirmButton, new Point(39, 16)); 
     else 
      Mouse.Click(uICancelButton, new Point(49, 8)); 
    } 
    finally 
    { 
     app.Close(); 
    } 
} 

Первый звонок работает без проблем каждый раз. Во время второго вызова появляется всплывающее окно сообщений, но не может быть установлено средой тестирования.

Критерии поиска, присвоенные CodedUiTestBuilder для MessageBox, это имя (информация) и имя класса (# 32770).

Есть ли у кого-нибудь какие-либо намеки на то, что может пойти не так, как надо? Является ли это некоторой доступностью в элементе управления MessageBox?

С уважением,

Себ

ответ

4

Вы можете обновить карту из метода испытаний. Поэтому, когда вы вызываете метод в частичном классе во второй раз, просто поместите что-то вроде UIMap MapName = new UIMap(); Затем это обновит карту, и вы сможете снова вызвать свое окно без проблемы обновления.

public void MyUiMethod(bool p) 
{ 
    UIMap MapName = new UIMap(); 

    //...variable initialization... 
    ApplicationUnderTest app = ApplicationUnderTest.Launch(@"some.exe"); 
    try 
    { 
     //... get to the point that triggers the MB to show... 
     Assert.AreEqual(true, MapName.uImessageBoxWindow.Exists); 

     UIMap MapName = new UIMap(); 
     if (p) 
      Mouse.Click(MapName.uIConfirmButton, new Point(39, 16)); 
     else 
      Mouse.Click(MapName.uICancelButton, new Point(49, 8)); 
    } 
    finally 
    { 
     app.Close(); 
    } 
} 

Надеюсь, что это поможет.

+0

Большое спасибо, что помогло мне! Интересно, почему я не пробовал это раньше ... –