4

外部のWebサービスに依存して完了するOCUnitユニットテストケースを作成しました。これ自体が物議を醸していることは知っていますが、テストにWebサービスを含めたいと思っています(とにかく内部サーバーで実行されています)。

どうやら、SenTestCaseの一部として実行すると、NSURLConnectionの開始に失敗します。次の回線では接続がまったく開始されていません。

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];

デリゲートメソッドは呼び出されません。実質的に同一のコードは、通常、OCUnitの外部で実行されます。

これを実行できないのは、OCUnitランタイム環境について何ですか?

リクエストが返される前にテストが完了するわけではありません。リクエストの非同期性を処理するためのNSConditionロックがあります。また、これらを削除して、実行ループで回転させてみました。テストケースは実行を継続しますが、NSURLConnectionは開始されません。

可能であれば、テストを別の単体テストフレームワークに移行したくありません。

4

1 に答える 1

4

私はまったく同じ問題を抱えており、使用して解決します

 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:30]];

以前は NSCondition を使用していましたが、おそらく NSUrlConnection のスレッドをロックしていると思います。

于 2013-02-28T00:48:10.300 に答える