Кто-нибудь успешно реализовал шаблон объекта страницы в своих тестах пользовательского интерфейса? Я попробовал и столкнулся с проблемой. Когда я использую предикат для ожидания существования элемента, я получаю предупреждение в журнале. Вот фрагмент кода из класса Page объекта:Page Object Pattern for Xcode 7 UI Tests
XCUIElement *myCoolButton = self.app.buttons[@"Super Cool Button"];
[self expectationForPredicate:self.existsPredicate evaluatedWithObject:myCoolButton handler:nil];
[self waitForExpectationsWithTimeout:5.0f handler:nil];
При выполнении этого кода, я вижу следующее в журнале:
Questionable API usage: creating XCTestExpectation for test case -[MyPageObject (null)] which is not the currently running test case -[MyTestCase test]
и когда превышено время ожидания, я вижу ошибку в log, но сам тест на самом деле не сработает. Я предполагаю, что это происходит потому, что предикат настроен в классе Object Object, а не сам тест. Кто-нибудь мог обойти это?
Спасибо, Shahid. Вы правы, я унаследовал свой класс Object Object от XCTestCase. Я дам продление выстрела. Однако мы бы столкнулись с той же проблемой тайм-аута, что и не сбой теста, поскольку я буду использовать расширение XCUIElement в классе объектов страницы (а не сам тест)? – ryasui
@ryasui: Извините ryasui, означало написать расширение на XCTestCase, которое принимает XCUIElement. Соответственно ответил ответ – Shahid
@ryasui: Объекты страницы не должны делать никаких утверждений. Таким образом, вам не нужно будет писать waitForExpection в классе объектов страницы. В идеале он должен иметь только ссылки на объекты представления, которые используются в классе testcase для записи соответствующих тестов и утверждений. – Shahid