サブシステムが初期化されるのを待つために単体テストが必要ですが、通常は数秒かかります。これを待つために、私はこの問題は、この技術を用いて、あるテストXCTestですべての単体テストの実行を遅らせる
- (void)testReverseActionWithOffset
{
XCTestExpectation *expectation = [self expectationWithDescription:@"High Expectations"];
// Wait for proper initialization of Realm and CrimsonObject system...
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
で次の操作を行うことができ、私はすべての単一の試験方法で、この待機を行う必要があります。これは、システムが起動した後でも、各テストの間に2秒の遅延があることにつながります。テストメソッドは未定義の順序で実行されるため、遅延を1つのメソッドに入れることはできません。これをXCTestで処理する正しい方法は何ですか?
問題は、私の知る限り、私のテストで見ることができるよう、使用して遅延する方法はありませんでした、ですこれらの方法。期待は効果がないようで、sleep()をフラットにするとメインスレッドが遅れてロードが初期化されないようにします(これは最初に待っていたものです)。これを回避する方法が分かっている場合は、教えてください。ありがとう! – David
ノンブロッキング待ちをするには、条件が満たされるまで実行ループを回転させることができます: 'while(/ *サブシステムは準備できない* /){ [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]]; }「私はあなたの問題を解決することを犠牲にしてあなたの質問に答えていると感じるのを助けることはできません。本当の正解が何であるかはまだ分かりません。 –
スレッド内からメインスレッドを続けることができないことに気付かなかった!これは素晴らしいです。これを答えに加えることができますか?私は同意しますか? +(ボイド)のセットアップ {ながら() {[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:.1f]。 } } –
David