Проблемы с закодированным тестом пользовательского интерфейса и MessageBox - критерии поиска - PullRequest
3 голосов
/ 30 мая 2011

Я сейчас перевожу свои UI-тесты в CodedUI Tests.Прямо сейчас я сталкиваюсь со следующей проблемой:

В моем UnitTest я дважды вызываю метод, расположенный в моем UIMap.Метод содержит фрагмент, который проверяет, открыто ли окно 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?

С уважением,

Seb

1 Ответ

4 голосов
/ 01 июля 2011

Вы можете обновить карту из вашего метода испытаний.Поэтому, когда вы вызываете метод в частичном классе во второй раз, просто добавьте что-то вроде 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();
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...