Можете ли вы вызвать элемент управления, а не запускать приложение для закодированных тестов пользовательского интерфейса?

#mstest #coded-ui-tests

#mstest #coded-ui-tests

Вопрос:

У меня есть такой код, что:

 [CodedUITest]
public class CodedUITest1
{

[TestMethod]
public void CodedUITestMethod1( )
{
  using(var dlg = new MyWinForm( ))
  {
    dlg.Show();
    System.Threading.Thread.Sleep(2000);
    this.UIMap.AssertMethod1( );
    this.UIMap.RecordedMethod1( );
    this.UIMap.AssertMethod2( );
   }

  }
}
  

Код работал нормально, когда я вручную запустил приложение (перед вызовом теста) без предложения using для непосредственного создания элемента управления.

Я хотел бы просто использовать ссылку для создания экземпляра элемента управления и перейти оттуда, вместо того чтобы полагаться на попытки определить путь к исполняемому файлу и открыть его. Приложение просто застревает с ContextSwitchDeadlock .

Есть ли способ выполнять тесты с кодированным пользовательским интерфейсом без запуска процесса? (используя ссылку и создавая элемент управления в тестовом коде) или что-то не так с тем, как я пытаюсь это сделать?

Комментарии:

1. Затем после нажатия кнопки ОК в тупик переключения контекста и повторного нажатия кнопки воспроизведения в VS2010 ultimate… Я получаю исключение UITestControlNotFoundException

2. Я знаю, что это было 5 лет назад, но вам когда-нибудь удавалось заставить это работать? Я пытаюсь сделать то же самое и сталкиваюсь с теми же проблемами?

3. Я не верю, что я это сделал.

Ответ №1:

Это может быть возможно, если вы вызовете части кодированных тестов пользовательского интерфейса (this.UIMap …) в отдельном потоке. Но в том виде, в каком вы используете его сейчас, они оба находятся в одном потоке, так что вы зайдете в тупик.