2012-02-20 8 views
6

Về cơ bản, với MVVM, tôi có rất nhiều điều khiển của tôi không được đặt tên bởi vì không cần thiết phải đặt Tên (hoặc x: Tên) để điều khiển nữa.CUIT (Kiểm tra giao diện người dùng được mã hóa) + MVVM - Tôi có phải bắt đầu đặt tên tất cả các điều khiển của mình ngay bây giờ không?

Nhưng, nhìn vào giao diện người dùng được mã hóa Kiểm tra có vẻ như tôi có thể phải trải qua và đặt tên lại tất cả các điều khiển của tôi? Hay tôi chỉ hiểu lầm những gì tôi đọc và có một cách thân thiện với MVVM để làm CUIT?

+0

Kiểm tra giao diện người dùng được mã hóa cho WPF thực sự được bán một nửa. Có rất nhiều nhà cung cấp kiểm soát mà các điều khiển của họ sẽ không hoạt động với Kiểm tra giao diện người dùng được mã hóa. Bạn có thể muốn xem xét một Test Suite thay thế (như Telerik hoặc Infragistic's) – Jeff

+0

Vâng, đó là vấn đề của điều khiển CUIT/3rd party chứ không phải các điều khiển .NET WPF mà tất cả đều có một AutomationPeer được xây dựng cho chúng. –

+0

Đúng, nhưng tôi vẫn gặp nhiều vấn đề trong đó kiểm tra giao diện người dùng được mã hóa của tôi chỉ dừng tìm các phần tử giao diện người dùng và tôi cần phải ghi lại. – Jeff

Trả lời

3

Bạn có thể thêm id tự động từ không gian tên System.Windows.Automation.AutomationProperties thay vì phải thay đổi id của các điều khiển. Tôi muốn đề nghị rằng hơn mong đợi các yếu tố để ở trong cùng một thứ tự như stoj nói ở trên, nó sẽ rất đau đớn.

Xem bài đăng tôi tìm thấy trên [sử dụng id tự động hóa]. 1 Dưới đây là ví dụ từ bài đăng của anh ấy:

<MyControl AutomationProperties.AutomationId="AnUniqueValue"/> 
protected override string GetAutomationIdCore() 
{ 
    return (AutomationProperties.GetAutomationId(_owner)); 
} 
1

Ok, do đó, dường như có các kiểm soát chưa đặt tên khiến rất khó thực hiện các thay đổi không phá vỡ Kiểm tra giao diện người dùng được mã hóa. Mã được tạo sẽ gán các hộp văn bản có thể chỉnh sửa dựa trên thứ tự chúng được viết trong XAML, điều đó có nghĩa là nếu tôi di chuyển các điều khiển xung quanh nó sẽ phá vỡ các Kiểm tra giao diện người dùng được mã hóa của tôi.

Tôi chưa khám phá đầy đủ Tiêu chí tìm kiếm, nhưng tôi cho rằng việc tạo Kiểm tra giao diện người dùng được mã hóa bằng các điều khiển chưa đặt tên là phức tạp hơn nhiều. À, tôi đoán Tên/x: Tên sẽ trở lại.

4

Nếu bạn muốn tương tác đáng tin cậy với điều khiển bằng cách sử dụng các thử nghiệm được ghi lại, bạn sẽ cần phải cung cấp tên hoặc id cho điều khiển. Nếu không có tên, thử nghiệm của bạn sẽ dựa vào thuộc tính cá thể mà bạn nhận thấy phụ thuộc vào vị trí của điều khiển chưa đặt tên liên quan đến các điều khiển chưa được đặt tên khác.

Nếu ứng dụng của bạn rất tĩnh, bạn có thể thoát khỏi việc không có tên, nhưng điều khiển di chuyển có thể dẫn đến vỡ. Bạn cũng sẽ gặp phải sự cố với các điều khiển được tải động bởi vì chúng có thể làm cho các giá trị của đối tượng thay đổi và hành động được ghi lại của bạn có thể xảy ra trên điều khiển sai.

Đừng làm cho tôi sai, bạn có thể viết các kiểm tra CodedUI cho các ứng dụng mà không cần kiểm soát tên nó sẽ chỉ là một điểm đau lớn và bản ghi sẽ không đáng tin cậy.