如果自定义单元格已注册到 tableView
,我想进行单元测试。
-(void)viewDidLoad
{
[super viewDidLoad];
UINib *nib = [UINib nibWithNibName:@"FTStatsCellView" bundle:nil];
[[self tableView] registerNib:nib forCellReuseIdentifier:@"FTStatsCellView"];
}
单元测试:
-(void)testIfCustomCellsAreRegisteredToTable
{
[viewController viewDidLoad];
FTStatsCellView *cell = [[viewController tableView] dequeueReusableCellWithIdentifier:@"FTStatsCellView"];
XCTAssertNotNil(cell, @"Custom cell FTStatsCellView is not registered with the table.");
}
测试失败并显示消息:
[FTStatsViewControllerTests testIfCustomCellsAreRegisteredToTable] failed: Could not load NIB in bundle: 'NSBundle (loaded)' with name 'FTStatsCellView'
有什么建议吗?谢谢
更新
如果我单击该项目并将测试目标
的目标从“无”更改为应用程序,那么它就可以工作了。
但这有副作用,每次我想运行单元测试时,应用程序都会在模拟器中运行。
有什么建议吗?
最佳答案
设置目标为测试目标指定 BUNDLE_LOADER 和 TEST_HOST。在运行单元测试时,这对于以下序列是必需的:
- Xcode 在模拟器中启动您的应用程序(或在设备上,但我从不在设备上运行单元测试)
- Xcode 将测试目标注入(inject)到正在运行的应用中
- Xcode 调用所有测试
- Xcode 退出您的应用
所有这些对于在 Cocoa Touch 之上运行的单元测试都是必要的——特别是任何涉及加载其 View 层次结构的 View Controller 。
关于ios - 如何测试自定义单元格是否已在 tableView 中注册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936712/