2016-12-14 2 views
0

Как я могу получить доступ к контактам на MKMapView с помощью пользовательских интерфейсов XCTest?MKAnnotation через тестирование XCTest UI

Я хочу, чтобы подсчитать число, проверить конкретные из них есть (на основе доступности идентификатора или название) и т.д.

Там, кажется, не быть XCUIElementType для MKAnnotation.

Мне сложно найти документацию по MKMapView + XCTest.

ответ

2

Использование UIAccessibilityIdentification.

class Annotation: NSObject, MKAnnotation, UIAccessibilityIdentification { 
    let coordinate: CLLocationCoordinate2D 
    let title: String? 
    var accessibilityIdentifier: String? 

    init(title: String?, coordinate: CLLocationCoordinate2D) { 
     self.title = title 
     self.coordinate = coordinate 
    } 
} 

let coordinate = CLLocationCoordinate2DMake(40.2853, -73.3382) 
let annotation = Annotation(title: "A Place Title", coordinate: coordinate) 
annotation.accessibilityIdentifier = "Some Identifier" 
let mapView = MKMapView() 
mapView.addAnnotation(annotation) 

При испытании вы можете ссылаться на аннотацию через otherElements.

let app = XCUIApplication() 
let annotation = app.maps.element.otherElements["Custom Identifier"] 
annotation.tap() 
+0

Я использую IBOutlet для MKMapView. XCTest сообщает мне «Нет совпадений для карты» при попытке доступа: app.maps.element.otherElements ["Pin 1"] –

3

К сожалению, аннотация отсутствует под maps. Вместо этого вы найдете на карте точки интереса. Чтобы запросить аннотацию, вы должны использовать XCUIApplication().windows.element.otherElements["Custom Identifier"].

Добавить accessibilityIdentifier = "Custom Identifier" в свою аннотацию вид, а не аннотация. MKAnnotation не реализует accessibilityIdentifier.

+0

Вы можете просто использовать 'app.otherElements [" Custom Identifier "]' – onmyway133

Смежные вопросы