私はユニットテストのためのCedarフレームワークを使用するより大きなプロジェクトに入っています。私はUITableViewを含むビューの単体テストを書いています。TableViewCellsをリフレッシュする方法
初期化:
subject = [[ControllerWithTableView alloc] initWithParams:params];
navigationController = [[UINavigationController alloc] initWithRootViewController:subject];
は、その後、私はいくつかのことを設定し、呼び出し:テストで
[subject: viewWillAppear:NO];
私はindexPathsで細胞を求めることができるなど、この背後にある 主なアイデアは、それということですUIを設定する時間がかかりすぎることなく実行されます。
[subject.view layoutIfNeeded];
とを、それが働いた:私は追加する必要がありましたいくつかのテストで
。
しかし、現在のテストでは、実行時に呼び出されるのと同じメソッドで新しいtableViewRowを追加しています。しかし、私は新しい行とセルを作成するためにそれをテストするためにUITableViewをリロードするためのテストを得ることができません。
Hereを使用することが提案されています
#define tickRunLoop (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.01, false))
それは動作します。しかし時々それはクラッシュします。 1つのテストに失敗するだけでなく、単体テストを実行するプロセスがクラッシュします。他のすべてのテストは最後まで実行されません。私は不安定なコードを顧客のレポにプッシュすることができないので、オプションではありません。
私はXCode 8.3.3を使用しています。
強制的に更新するには他に何ができますか?