2010-09-30 28 views
10

Tôi đã dành thời gian để thiết lập một số Bài kiểm tra đơn vị và thiết lập các mục tiêu trong XCode, v.v., và chúng khá hữu ích cho một vài lớp. Tuy nhiên:Kiểm tra đơn vị là tuyệt vời, nhưng

Tôi muốn thử nghiệm các phần giao diện người dùng nhỏ mà tôi không muốn khởi chạy toàn bộ ứng dụng. Không có khái niệm truyền/thất bại: Tôi cần phải "xem" các phần, và tôi có thể tạo các trường hợp giả của tất cả các lớp liên quan để thực hiện việc này. Câu hỏi của tôi là: làm thế nào tôi có thể thiết lập điều này trong XCode?

Tôi nhận ra mình có thể sử dụng một dự án XCode khác cho mỗi lớp (hoặc nhóm lớp), nhưng điều đó có vẻ hơi cồng kềnh. Một mục tiêu khác cho mỗi?

Trả lời

5

Vâng, bạn không thể gọi hiển thị một phần GUI nào đó để kiểm tra ngay cả khi GUI đó là một phần của ứng dụng lớn. Những gì bạn có thể làm ở đây là tạo một mục tiêu thực thi riêng biệt và viết một công cụ nhỏ sử dụng lại các thành phần GUI từ ứng dụng của bạn và hiển thị chúng cho bạn dựa trên các tham số đầu vào. Điều này sẽ loại bỏ sự cần thiết cho nhiều mục tiêu khác nhau.

Nếu bạn vẫn khăng khăng sử dụng các bài kiểm tra đơn vị, bạn có thể hiển thị GUI của mình trong một khoảng thời gian, ví dụ, 10 giây. Vì vậy, trường hợp thử nghiệm sẽ chạy cho đến khi GUI bị đóng hoặc hết thời gian chờ và mỗi lần kiểm tra sẽ mất tới N giây để thực thi.

+0

Cảm ơn, điểm lấy về nó không phải là "thử nghiệm". Vì vậy, đây là những mục tiêu mới trong cùng một dự án XCode, hoặc trong một dự án khác? –

+0

@Yar: Nó giống như một vấn đề sở thích cá nhân. Giữ nó trong cùng một dự án là thuận tiện hơn cho tôi. –

2

Đây là một câu hỏi hay. Tôi nghĩ bạn thực sự không muốn sử dụng các bài kiểm tra đơn vị cho những 'xác nhận hình ảnh' đó. Cá nhân tôi thường viết các ứng dụng thử nghiệm nhỏ để làm loại thử nghiệm hoặc phát triển này. Tôi không thích các mục tiêu riêng biệt trong cùng một dự án vì vậy tôi thường chỉ tạo một dự án thử nghiệm bên cạnh dự án gốc và sau đó tham khảo các lớp và tài nguyên đó bằng cách sử dụng các đường dẫn tương đối. Ít lộn xộn hơn. Và nó thực sự là tốt đẹp để có thể kiểm tra các yếu tố giao diện người dùng phức tạp hơn trong môi trường thử nghiệm nhỏ của riêng họ.

+0

Thú vị ... Tôi đã suy nghĩ về các dự án XCode riêng biệt, chỉ muốn chắc chắn rằng tôi là lành mạnh :) –

2

tôi sẽ tham gia một cách tiếp cận hai cấp để UI "kiểm tra đơn vị":

  1. lthough Cocoa/CocoaTouch vẫn gần gũi hơn với các MVC hơn mô hình Model-View-ViewModel, bạn có thể đạt được nhiều lợi thế testability bằng cách phá vỡ "View" của bạn thành một "view model" và một view "presenter" (lưu ý rằng điều này là phần nào dọc theo các dòng của cặp NSView/NSCell;). Nếu chế độ xem là một lớp trình bày đơn giản, bạn có thể kiểm tra hoạt động của chế độ xem theo đơn vị kiểm tra "mô hình chế độ xem".

  2. Để kiểm tra bản vẽ/hiển thị các chế độ xem của bạn, bạn sẽ phải thực hiện kiểm tra của con người hoặc thực hiện các thử nghiệm dựa trên pixel/hiển thị. Google's Toolbox for Mac có một số công cụ để so sánh pixel-by-pixel của NSViews, CALayers, UIViews, v.v. Tôi đã viết một tool cho dự án Core Plot để xử lý các lỗi kiểm tra và kết hợp các tệp tham chiếu trở lại vào thử nghiệm đơn vị của bạn nhóm ít dễ dàng hơn.

+0

http://developer.apple.com/tools/unittest.html –

12

Tôi biết rằng bạn đang tìm cách thử nghiệm các thành phần giao diện người dùng không yêu cầu ứng dụng đầy đủ chức năng, nhưng tôi đã rất ấn tượng với những gì công cụ giao diện người dùng mới được giới thiệu trong iOS 4.0 làm.

Công cụ này cho phép bạn sử dụng các tập lệnh Javascript để kiểm tra tương tác giao diện ứng dụng của bạn và nó không theo cách không yêu cầu kiểm tra giá trị pixel chính xác hoặc vị trí trên màn hình. Nó sử dụng các móc truy cập tích hợp có trong hệ thống để VoiceOver xác định và tương tác với các thành phần.

Sử dụng công cụ này, tôi đã có thể thực hiện các bài kiểm tra thực hiện đầy đủ ứng dụng của mình khi người dùng tương tác với ứng dụng, cũng như những ứng dụng búa trên các khu vực cụ thể và tìm kiếm các bản dựng bộ nhớ tinh tế.

Tài liệu về phần này của Công cụ hơi thưa thớt, nhưng gần đây tôi đã dạy một lớp về chủ đề mà video là available on iTunes U miễn phí (hãy tìm lớp Thử nghiệm trong học kỳ mùa thu). My course notes (ở định dạng VoodooPad) cũng bao gồm điều này. Tôi cũng khuyên bạn nên xem phiên WWDC 2010 video 306 - "Tự động kiểm tra giao diện người dùng bằng dụng cụ".

+0

Đôi khi tôi tự hỏi tại sao tôi hỏi quá nhiều câu hỏi về SO, nhưng thỉnh thoảng tôi nhận được phản hồi như thế này mở ra cánh cửa mà tôi đã không làm thậm chí còn biết. Cám ơn vì cái này. –

+0

+1. Đây là thông tin tuyệt vời! –