#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 …) в отдельном потоке. Но в том виде, в каком вы используете его сейчас, они оба находятся в одном потоке, так что вы зайдете в тупик.