nir*_*rch 6 unit-testing objective-c uiviewcontroller ios uicollectionview
我想对UIVollection视图中的UICollectionView进行单元测试(例如,我想测试UICollectionView是否具有我希望它在单元测试中具有的单元格数)
我的单元测试基于以下博客(关于如何对视图控制器进行单元测试):http: //yetanotherdevelopersblog.blogspot.co.il/2012/03/how-to-test-storyboard-ios-view.html
在单元测试中,我能够在我正在测试的UIViewController中获得指向UICollectionView的指针.这是我的测试的setUp方法中的代码:
storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainViewController"];
[viewController performSelectorOnMainThread:@selector(loadView) withObject:nil waitUntilDone:YES];
self.collectionView = viewController.collectionView
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个UICollectionView中没有单元格(即self.collectionView.visibleCells.count等于0,因此我无法访问单元格并测试数据是我期望的那样),虽然在调试时我可以看到我的应用程序将这些单元格添加到集合中视图.
我究竟做错了什么?有关如何在UIViewController中单元测试UICollectionView的任何提示和技巧?
编辑:
在Roshan的帮助之后,我现在可以缩小我的问题范围了.我正在测试一个有UICollectionView的UIViewController.在我的单元测试中,我想测试CollectionView中的单元格值是我期待它的.但是,collectionView:cellForItemAtIndexPath:我的ViewController上没有调用它,因此当作为单元测试调用时,我的单元格不存在.任何的想法?
我不知道问题到底出在哪里,但苹果的文档是这样说的loadView:
\n\n\n您永远不应该直接调用此方法。当请求视图属性但当前为 nil 时,视图控制器调用此方法。如果您手动创建视图,则必须重写此方法并使用它来创建视图。如果使用 Interface Builder 创建视图并初始化视图控制器\xe2\x80\x94,即使用 initWithNibName:bundle: 方法初始化视图,直接设置 nibName 和 nibBundle 属性,或者同时创建视图和视图控制器在 Interface Builder\xe2\x80\x94 中,则不得重写此方法。
\n
因此,不要直接调用它,而是调用[viewController view]强制加载视图。
至于你的问题,检查是否viewController.collectionView为0。您的插座可能尚未设置。
| 归档时间: |
|
| 查看次数: |
6463 次 |
| 最近记录: |