Как написать тест приложения, который проверяет, что при нажатии кнопки отображается определенный вид? - PullRequest
1 голос
/ 22 августа 2011

Я смотрю на пример кода Apple для тестов приложений, и все это включает в себя изменения в конкретном представлении. Я хотел бы написать тест, который утверждает следующее:

Given that I am seeing the Results view,
And I press the button for the first result,
Then I should see a Detail view,
And its controller's result property should be set to the first result

Как мне написать этот контрольный пример?

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

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

Я сам не использовал эту платформу, но намеревался проверить ее.

http://corner.squareup.com/2011/07/ios-integration-testing.html

Надеюсь, это поможет.

2 голосов
/ 25 августа 2011

В псевдокоде я думаю, что ваш тест будет выглядеть следующим образом:

// in setUp, grab a reference to your desired view controllers & buttons
// in the test method:
//   press a tab (or whatever it takes) to navigate to the Results view
//   press the button for the first result (using target/action or however you have it set up)
     STAssertTrue([myNavigationController.visibleViewController isKindOfClass:[DetailViewController class]]);
     STAssertTrue([(DetailViewController *)myNavigationController.visibleViewController result] == /*first result from earlier*/);
// in tearDown, do cleanup if necessary

Если этого недостаточно, вы должны опубликовать часть своего кода, чтобы мы могли легче помочь.


Редактировать: Дополнительная информация о setUp.Я думаю, что стоит взглянуть на реализацию из примера кода, с которым вы связались:

- (void) setUp {
   app_delegate         = [[UIApplication sharedApplication] delegate];
   calc_view_controller = app_delegate.calcViewController;
   calc_view            = calc_view_controller.view;
}

app_delegate, calc_view_controller и calc_view являются переменными экземпляра класса CalcApplicationTests, поэтому они могутиспользоваться из любого -test... метода.Делегат приложения, по своей природе являющийся контроллером для приложения, имеет ссылку на контроллер основного представления.Я думаю, что это довольно простой и разумный способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...