У меня есть представление WPF и я создаю радиокнопку на нем программно:
// public class MyView
var radioButton = new RadioButton
{
Name = "NameGoesHere",
Content = "Use alternative option",
FontWeight = FontWeights.Bold,
IsChecked = false
};
radioButton.SetBinding(ToggleButton.IsCheckedProperty, new Binding("UseAlternativeOption")
{
Converter = new CustomNullableBoolConverter(),
ConverterParameter = true,
Mode = BindingMode.TwoWay
});
panel.Children.Add(radioButton);
Эта радиокнопка имеет двустороннюю привязку к свойству в моей модели представления:
// public class MyViewModel
public bool? UseAlternativeOption
{
get
{
return _useAlternativeOption;
}
set
{ // breakpoint here is not being hit when updated from automated UI test scenario
_useAlternativeOption = value ?? false;
OnPropertyChanged(nameof(UseAlternativeOption));
}
}
Теперь, когда я нажимаю этот переключатель в приложении, он корректно вызывает установщик свойств и устанавливает значение.
Проблема в том, что он не работает, когда я пытаюсь сделать то же самое из кодированного теста пользовательского интерфейса:
// public class MyUnitTests
var alternativeOptionRadioButton = UIControlBuilder<WpfRadioButton>.Builder()
.Parent(ContentPane)
.AutomationID(AlternativeOptionRadioButtonAutomationID)
.Build();
alternativeOptionRadioButton.Selected = true;
Assert.AreEqual(true, viewModel.UseAlternativeOption);
Я вижу, что переключатель выбран в форме и может видетьэто свойство Selected
имеет значение true
, но установщик видовой модели не ударил.Я установил точку останова на линии _useAlternativeOption = value ?? false
, и она не срабатывает, когда она срабатывает при запуске вне сценария тестирования пользовательского интерфейса и щелкается вручную.
Что-то мне не хватает?
Как заставить RadioButton вызвать изменение Binding
в сценарии автоматического тестирования пользовательского интерфейса?