0

さまざまなパラメーターを使用してSSRS2008Webサービスを呼び出し、結果のレポートをルーティングすることを目的とした小さなバッチプログラムがあります。(さまざまな理由により、SSRSサブスクリプションはこの環境では機能しません。)

現在、このParallelクラスを使用して一度に複数のレポートを実行し、レポートサーバーの複数の同時リクエストを処理する機能を利用しています。しかし、私は(ここのコメントで)これが進むべき道ではないことを読みました:クライアント上の複数のスレッドに分散しているのは処理負荷ではなくI / Oであるため、やるべきことはWebサービスに非同期呼び出しを行い、結果を待ちます。

xxxxAsyncVS 2010は、メソッドとxxxxCompletedイベントを含むWebサービスクライアントを生成しました。呼び出すメソッドをいくつか設定するのは比較的簡単です。1つはWebサービスメソッドを呼び出し、もう1つはRender2Asyncを処理しますRender2AsyncCompleted

しかし今、私はなじみのない領域にいます。まず、これは私のすべてのテストを破ります。非同期Webサービスをテストするにはどうすればよいですか:非同期テストを作成することによって?アプリが特定のレポートで終了し、テストを続行できることをテストが認識できるように、アプリは独自のEventCompletedメッセージを起動する必要がありますか?

次に、アプリが途中で終了するのを防ぐにはどうすればよいですか?WaitHandleとそのメソッドについて読みましたWaitHandle.WaitAllが、すべてのタスクから待機ハンドルにアクセスでき、Webサービスクライアントによって公開されているものはないと想定しています。メソッドにはRender2Async戻り値がありません。

どうもありがとう。

4

1 に答える 1

1

NUnitは、このような場合に定期的にテストをポーリングできる遅延制約「After」をサポートしています。NUnitの例ここここの後。単純なポーリングソリューションであるため、技術的に包括的ではありませんが、使いやすく、いくつかの単純なケースで機能します。

MicrosoftのSilverlightテストフレームワークは、ここここの記事に示されているように、EnqueueXXXメソッドを使用してもう少し包括的なサポートを提供しています。

最後に、ManualResetEventを使用したユニットテストの「手動」方法もこの記事に示されています。

于 2012-09-02T04:45:21.663 に答える