UITesting,XCTest当前的ViewController类

时间:2015-11-23 13:32:00

标签: ios swift xctest xcode-ui-testing

简单的问题。我得到了对下一个视图控制器执行segue的按钮。 我想写UI XCTest告诉我它是否打开了我想要的视图控制器。

1 个答案:

答案 0 :(得分:1)

Matt Green的评论给了我一个好主意。我们可以定义一个未使用的标签/按钮,最好是在基本视图控制器内部,并为其分配一个可访问性标签,以执行查询以找出要显示的视图控制器。

public class BaseViewController: UIViewController {

    let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))

    public override func viewDidLoad() {
        super.viewDidLoad()
        if let identifier = self.theClassName.split(separator: ".").last {
            button.accessibilityIdentifier = String(identifier)
            view.addSubview(button)
        }
    }
}

public class DatePickerViewController: BaseViewController {
   ...
}

func testExample() {
    let app = XCUIApplication()
    app.launch()
    app.navigationBars.buttons["DateSelector"].tap()
    XCTAssertTrue(app.buttons["DatePickerViewController"].exists)
}

请注意,为了使此方法有效,您必须添加用于标识视图控制器的视图(在这种情况下为按钮)应作为子视图添加,并且必须具有非零帧。