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
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 UILabel
và UIButton
vào storyboard
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.
- Đặt curser của bạn trong phương pháp
testExample()
. (Bạn có thể xóa các ý kiến)
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.
- Vậy là xong! Điều này cho thấy rằng tồn tại
UIButton
và UILabel
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
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
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
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