2015-07-24 64 views
15

Tôi vừa mới tìm hiểu về Unit Testing in Xcode. Bây giờ tôi đang thử Xcode 7 và tôi thấy có một nhóm mới cho kiểm tra giao diện người dùng khi tôi tạo một dự án mới.Ví dụ về giao diện người dùng Xcode Ví dụ

enter image description here

Tôi đã xem WWDC 2015 video và nó là khá tốt, nhưng bạn có một ví dụ siêu đơn giản mà tôi có thể đi qua bản thân mình? Các ví dụ video hơi phức tạp đối với tôi.

Ghi chú

Trả lời

44

Sử dụng Kiểm tra đơn vị để kiểm tra tính hợp lệ của các phương pháp trong lớp học của bạn. Bạn sử dụng chúng để kiểm tra mã bạn đã viết. (Xem my other example để thiết lập Kiểm tra Đơn vị đơn giản trong Xcode.)

Sử dụng Kiểm tra giao diện người dùng để kiểm tra tính hợp lệ của giao diện người dùng. Hãy suy nghĩ về nó giống như có robot của riêng bạn để đi qua và làm tất cả các tương tác bình thường với ứng dụng của bạn mà một người dùng bình thường sẽ. Điều này giúp bạn tiết kiệm thời gian tự làm.

Tại thời điểm viết bài này, rất khó để truy cập nhiều thuộc tính của các thành phần giao diện người dùng, nhưng chỉ cần có một thử nghiệm đi qua khai thác chúng và vuốt chúng xác nhận rằng chúng ở đó.

Ví dụ

Đây là về cài đặt và giao diện người dùng thử nghiệm đơn giản nhất mà tôi có thể nghĩ ra: một nút mà khi ép thay đổi nội dung của một nhãn.

Thiết lập

  • Tạo một dự án mới trong Xcode 7+ dành cho iOS 9.0+.
  • Hãy chắc chắn rằng Bao gồm giao diện người dùng thử nghiệm được kiểm tra

enter image description here

  • Nếu bạn đang thêm các xét nghiệm UI cho một dự án tạo ra trước Xcode 7, xem this answer.(File> New> Target> Thử nghiệm> Cocoa Touch UI Testing Bundle)

  • Thêm một UILabelUIButton vào storyboard

enter image description here

  • Tạo một @IBOutlet và @ IBAction trong số ViewController và thực hiện thay đổi văn bản label khi nhấn button.

    import UIKit 
    class ViewController: UIViewController { 
        @IBOutlet weak var label: UILabel! 
        @IBAction func button(sender: AnyObject) { 
         label.text = "Hello" 
        } 
    } 
    

Làm bài kiểm tra

  • Mở YourProject UITests tập tin.

enter image description here

  • Đặt curser của bạn trong phương pháp testExample(). (Bạn có thể xóa các ý kiến)

enter image description here

  • Nhấn đỏ nút Record

enter image description here

  • Trong ứng dụng, (1) khai thác nhãn, (2) nhấn nút và sau đó (3) nhấn lại vào nhãn. (4) Nhấn nút Ghi lại để dừng ghi. Các mã sau đây nên đã được tự động tạo ra cho bạn:

    func testExample() { 
    
        let app = XCUIApplication() 
        app.staticTexts["Label"].tap() 
        app.buttons["Button"].tap() 
        app.staticTexts["Hello"].tap() 
    } 
    
  • Sử dụng staticText dòng như là một điểm khởi đầu cho việc thực hiện một XCTAssert. Bây giờ bạn cần có:

    func testExample() { 
    
        let app = XCUIApplication() 
        XCTAssert(app.staticTexts["Label"].exists) 
        app.buttons["Button"].tap() 
        XCTAssert(app.staticTexts["Hello"].exists) 
    } 
    
  • Nhấn kim cương ở bên trái để chạy Kiểm tra giao diện người dùng. Nó sẽ chuyển sang màu xanh khi nó đi qua.

enter image description here

  • Vậy là xong! Điều này cho thấy rằng tồn tại UIButtonUILabel và văn bản của nhãn đã thay đổi. Nếu bạn muốn thấy nó thất bại (một ý tưởng tốt), bạn có thể thay đổi "Hello" thành một cái gì đó khác.

Tiếp tục nghiên cứu

+0

Làm cách nào để đảm bảo rằng đó là nhãn đã thay đổi? Nếu đó là một nút được thay đổi thành "Xin chào", bài kiểm tra cũng sẽ vượt qua. Một tùy chọn sẽ là kiểm tra xem nhãn và nút có tồn tại không, nhưng đây không phải là chung chung. Điều gì xảy ra nếu chúng ta muốn thay đổi nhãn thành chuỗi rỗng thay vì "Xin chào"? 'app.staticTexts [" "]. tồn tại' hầu như luôn đúng. – Kalicz

+0

Tại sao chúng ta không thể truy cậpIdentifer để xác định các phần tử thay vì văn bản được mã hóa cứng như "Hello". Điều này luôn luôn giúp, mặc dù văn bản được thay đổi trong tương lai. – Sravan

+0

Tôi chắc chắn rằng có thể sẽ tốt hơn. Câu trả lời ở trên là một cái gì đó tôi đã thực hiện như tôi đã cố gắng để tìm ra thử nghiệm giao diện người dùng trong sự vắng mặt của bất kỳ ví dụ đơn giản khác. Vui lòng thêm câu trả lời khác cho câu hỏi này để cải thiện câu trả lời của tôi. – Suragch

9

@Suragch +1 cho câu trả lời. Một điều tôi quan sát và muốn chia sẻ rằng mọi chức năng bên trong trường hợp Kiểm tra UI phải bắt đầu bằng "kiểm tra". Bạn có thể gắn thêm tên sau đó. Chỉ bằng cách này, nút (để nhấp để bắt đầu thử nghiệm) xuất hiện.

+0

Bạn có thể đề xuất chỉnh sửa hoặc nhận xét. Một câu trả lời riêng biệt có ý nghĩa. –