Меня немного смущает новая схема модульного тестирования пользовательского интерфейса, которую Apple выпустила в своей бета-версии XCode7. Я думаю, что это отличная идея, но у меня есть пара вопросов.
это один из методов тестирования, который у меня есть...
func testMetricsProperties() {
// Used some of the metrics for testing for reference
let app = XCUIApplication()
app.scrollViews.descendantsMatchingType(.Unknown).containingType(.StaticText, identifier:"rim").childrenMatchingType(.Button).element.tap()
app.textFields["_XCUI:Secure"].typeText("")
app.typeText("\r")
app.buttons["dash metrics"].tap()
let element = app.descendantsMatchingType(.Unknown).containingType(.Image, identifier:"darkBackground.png").childrenMatchingType(.Unknown).element.childrenMatchingType(.Unknown).elementBoundByIndex(1).childrenMatchingType(.Unknown).element.childrenMatchingType(.Unknown).element
let offPlanRevenue = element.childrenMatchingType(.Unknown).elementBoundByIndex(0).staticTexts["OFF PLAN REVENUE"]
offPlanRevenue.tap()
XCTAssert(offPlanRevenue.exists);
XCTAssertEqual(offPlanRevenue.value as! String, "");
}
Однако в следующем методе тестирования кажется, что мне нужно снова загрузить все приложение,
let app = XCUIApplication()
app.scrollViews.descendantsMatchingType(.Unknown).containingType(.StaticText, identifier:"im").childrenMatchingType(.Button).element.tap()
app.textFields["_XCUI:Secure"].typeText("")
app.typeText("\r")
app.buttons["dash metrics"].tap()
}
Могу ли я как-нибудь избежать этого? Это может быть проблематично, если я пытаюсь запустить полный тест всего пакета.
mainController
и добавьте методыopenMetrics
иtapRevenue
. Ваш код будет выглядеть какmainController.openMetrics() mainController.tapRevenue() XCTAssert(...)
. Вы увидите, что все станет читабельнее и проще. - person Sulthan   schedule 21.07.2015