저는 TestStack White (UI Automation)를 사용하여 WPF 기존 응용 프로그램에서 테스트를 자동화하기 시작했습니다. 표준 컨트롤을 사용할 때 모든 것이 잘 동작합니다. 그러나 사용자 정의 컨트롤을 상호 작용할 때 문제가 발생합니다.UI 자동화 및 TestStack White를 사용하려면 사용자 정의 컨트롤을 어떻게 정의해야합니까?
예를 들어, 실제로 TextBlock과 ComboBox 인 LabeledComboBox가 있습니다. 이 작업은 XAML에서 컨트롤 플러스의 ControlTemplate에서 파생 된 클래스로 정의된다
public class LabeledComboBox : Control
{
static LabeledComboBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(LabeledComboBox), new FrameworkPropertyMetadata(typeof(LabeledComboBox)));
}
}
<local:LabeledComboBox>
<local:LabeledComboBox.Template>
<ControlTemplate TargetType="{x:Type local:LabeledComboBox}">
<StackPanel>
<TextBlock Text="Text"/>
<ComboBox/>
</StackPanel>
</ControlTemplate>
</local:LabeledComboBox.Template>
</local:LabeledComboBox>
이 컨트롤 작동하지만 당신이 실행하는 경우 UI 자동화는 만 확인 UI Automation에 표시되는 부분은 ComboBox이며 TextBlock에 액세스 할 수 없습니다.
그러나 XAML 및 코드 숨김을 사용하여 UserControl로이를 만들면 TextBox와 ComboBox가 UI 자동화에 올바르게 표시됩니다.
내 컨트롤에 대한 AutomationPeer (FrameworkElementAutomationPeer)를 만들려고했지만 지금까지 UI 자동화에서 TextBlock을 볼 수 없었습니다. 흥미로운 결과 중 하나는 FrameworkElementAutomationPeer :: GetChildrenCore()가 TextBlock 및 ComboBox 용으로 2 개의 자동화 피어 목록을 제대로 반환한다는 것입니다.
UI 자동화 및 흰색을 사용하여 제대로 테스트 할 수 있도록 사용자 지정 컨트롤을 어떻게 변경해야합니까?
설명 주셔서 감사합니다. 모든 솔루션이 올바르게 작동합니다. 좀 더 많은 정보를 찾았습니다. http://stackoverflow.com/a/2846419/5414769 –