我想编写集成应用程序测试以测试完整的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的应用程序?如果是这样,请你分享一些示例代码或你的经验?
很难说出你想测试的东西 - 特定的视图控制器是否被推送? –