Я хочу написать тестовое приложение интеграции, чтобы проверить все операции CRUD. У меня есть табличное представление, чтобы перечислить все объекты. Пользователь может нажать кнопку «Добавить», чтобы нажать новый детализированный контроллер представления, чтобы добавить новый объект; Они могут щелкнуть на существующем объекте, чтобы выдвинуть контроллер детального вида, чтобы переименовать объект; Они также могут удалить объект из списка.
Я взволнован, чтобы попробовать OCUnit для тестирования моего приложения. Тем не менее, я столкнулся с некоторыми странными ошибками. Я использую UITabBarController + UINavigationController. У меня более 3 уровней pushViewController в моем UINavigationController. Если я тестирую код как есть с помощью [self.navigationController pushViewController: viewController animated: YES], он в основном работает с двумя предупреждениями:
nested push animation can result in corrupted navigation bar
nested pop animation can result in corrupted navigation bar
Я заметил, что viewDidAppear не вызывается, следовательно, предупреждения.
Затем я пытаюсь обойти, изменив анимированные: ДА на анимированные: НЕТ. Предупреждения уходят. Однако я столкнулся с еще одной ошибкой, когда viewDidLoad вообще не вызывается. Таким образом, представление не загружается из файла NIB, и все элементы управления IB равны нулю. Это был не тот случай, если я установил анимацию на ДА.
Это код, который я использую для получения дескриптора корневого контроллера представления в UINavigationController.
app = (MyAppDelegate*) [[UIApplication sharedApplication] delegate];
rootVC = ((MyViewController*)[[((UINavigationController*)[app.tabBarController.viewControllers objectAtIndex:0]) viewControllers] objectAtIndex:0]);
Я вручную вызвал этот код в своем тесте, чтобы смоделировать щелчок по UITableView:
[rootVC tableView:rootVC.tableView didSelectRowAtIndexPath:ip]; // push is called inside this
Так что я застрял, либо я установил анимированный: ДА, либо анимированный: НЕТ. Кто-нибудь успешно использует OCUnit для тестирования приложений с UINavigationController + UITableView? Если да, не могли бы вы поделиться примером кода или своим опытом?