#c# #wpf #unit-testing
#c# #wpf #модульное тестирование
Вопрос:
У меня есть TextBlock
MouseDown
событие:
tb.MouseDown = (s, e) => {
ToSp.Children.Add(CreateTbAlp((s as TextBlock).Text, ToSp));
CheckAnswer();
};
И в модульном тестировании мне нужно его протестировать. Я пытался:
TextBlockAutomationPeer peer = new TextBlockAutomationPeer(tb);
IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
invokeProv.Invoke();
Но в этом случае я получаю сообщение об ошибке
Исключение System.NullReferenceException
то же самое с этим
typeof (TextBlock)
.GetMethod("MouseDown", BindingFlags.Instance | BindingFlags.NonPublic)
.Invoke(tb, new object[0]);
Есть ли другой способ щелкнуть TextBlock
программно?
Комментарии:
1. Вся цель WPF и шаблона проектирования MVVM состоит в том, чтобы не делать безбожных взломов такого рода. Вы уверены, что именно так вы хотите создать свое приложение и именно так вы хотите его протестировать?
2. Или задать те же вопросы, используя разные слова: почему вы решили использовать Microsoft UI Automation API?
Ответ №1:
TextBlock.RaiseEvent(new RoutedEventArgs(TextBlock.MouseDown));