2015-12-17 3 views
1

Я хочу использовать тестирование пользовательского интерфейса Xcode для подсчета количества разделов в виде таблицы и количества ячеек в каждом разделе. Как я могу это сделать?Xcode UI Testing - разделы UITableView

+0

Почему бы не использовать источник данных, а? –

+0

1. Как я могу получить доступ к коду из теста пользовательского интерфейса? 2. Я хочу убедиться, что разделы правильно проанализированы из источника данных. – YogevSitton

+0

просто вызовите номер таблицы viewOfSection и numberOfRows из вашего тестового класса пользовательского интерфейса ...? (Не уверен, что я получаю ваш вопрос правильно) –

ответ

2

Joe Masilotti полностью прав в том, что код приложения не может быть доступен непосредственно из теста пользовательского интерфейса, хотя вы можете использовать backchannel, если хотите быть не в своем стиле. Предположим, вы этого не сделаете.

Рамка UI Test XCode имеет доступ ко всему языку Swift наряду с иерархией пользовательского интерфейса вашего приложения, но не к доступу к слою данных; так что вы можете сделать следующее:

  • Дайте колонтитулы из accessibilityIdentifiers Tableview разделов, которые включают в себя компонент индекса (например, photos.headers_0 и т.д.)
  • Сделав это, используйте условные для определения количества разделов
  • Аналогично, в вашем источнике данных можно назначить photos.section_0.cell_0, а итератор + условный может хранить количество ячеек в разделе 0 или любом другом разделе.
3

Начиная с Xcode 7, заголовки табличных представлений показаны как Other элементы.

Вот что я сделал для (сгруппированных) табличном в мое приложение:

extension TableLayoutTests { 

    func testHasMessagesGroup() { 
     XCTAssert(app.tables.otherElements["MESSAGES"].exists) 
    } 

    func testHasMessageCell() { 
     let header = app.tables.otherElements["MESSAGES"] 
     let cell = app.tables.cells.elementBoundByIndex(1) 
     XCTAssertGreaterThanOrEqual(cell.accessibilityFrame.minY, header.accessibilityFrame.maxY) 
    } 

    func testHasOtherMessageCell() { 
     let header = app.tables.otherElements["MESSAGES"] 
     let cell = app.tables.cells.elementBoundByIndex(2) 
     XCTAssertGreaterThanOrEqual(cell.accessibilityFrame.minY, header.accessibilityFrame.maxY) 
    } 

} 
+0

Очень креативно, нравится –

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