我想編寫集成應用程序測試以測試完整的CRUD操作。我有一個表格視圖來列出所有的對象。用戶可以點擊「添加」按鈕推送一個新的詳細視圖控制器添加一個新的對象;他們可以點擊現有對象來推送詳細視圖控制器來重命名對象;他們也可以從列表中刪除對象。OCUnit使用UINavigationController和UITableView測試我的應用程序
我很高興嘗試OCUnit來測試我的應用程序。但是,我遇到了一些奇怪的錯誤。我正在使用UITabBarController + UINavigationController。我的UINavigationController中有3個以上的pushViewController級別。如果我測試代碼,因爲它與[self.navigationController pushViewController:的viewController動畫:是],它主要有兩個警告作品:
nested push animation can result in corrupted navigation bar
nested pop animation can result in corrupted navigation bar
我注意到viewDidAppear並不因此稱爲警告。
然後我試着通過改變動畫:YES來動畫:NO。警告消失。但是,我遇到了另一個bug,其中viewDidLoad根本沒有被調用。所以視圖不會從NIB文件加載,所有IB控件都是零。如果我將動畫設置爲YES,情況並非如此。
這是我用來獲取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
所以我堅持要麼我設置動畫:是或動畫:NO。有沒有人成功使用OCUnit來測試使用UINavigationController + UITableView的應用程序?如果是這樣,請你分享一些示例代碼或你的經驗?
很難說出你想測試的東西 - 特定的視圖控制器是否被推送? –