私は、そのスキーマに基づいてXMLを検証するヘルパークラスを持っています。インスタンスメソッド/関数と組み合わされたいくつかの静的メソッド/関数があり、スレッド安全のためにそれをテストしたいと思います。マルチスレッドユニットテスト
MSTest(VS2008)でこのヘルパーをテストする最適な方法は何ですか?
私は、そのスキーマに基づいてXMLを検証するヘルパークラスを持っています。インスタンスメソッド/関数と組み合わされたいくつかの静的メソッド/関数があり、スレッド安全のためにそれをテストしたいと思います。マルチスレッドユニットテスト
MSTest(VS2008)でこのヘルパーをテストする最適な方法は何ですか?
おそらく私はあなたのクラスを管理し、すべてのスレッドが終了するのを待つ前にすべてのスレッド関連の例外をトラップし、結果の並行性の問題をチェックするために複数の同時スレッドを起動しないでください。
私の意見では、単体テストのスレッド問題を解決する最も良い方法は、問題を予測し、テストが具体的に各状況を引き起こすようにすることです。単体テストは、同じコードに対して実行するたびに常に同じ結果を生成する必要があります。
テストする特定の問題がない場合は、Microsoft CHESS(http://research.microsoft.com/en-us/projects/chess/)を参照してください。
パブリックメソッド/関数がすべて成功するというテストがもう一度繰り返されます。しかし、このコンポーネントは生産に失敗しました(Biztalk - > Orchestrations)。メッセージが間違っていて、その逆の間にメッセージが正常に検証されたことがあります.... –
OSがスレッドの実行をどのようにスケジューリングするかはわからないので、これは難しいことです。テストはランダムに失敗する可能性が非常に高いでしょう。 可能であれば、ロック/その他の同期技術を削減し、スレッドの安全性を設計するように(たとえば、共有状態を使用しない)、設計を変更します。
一般的にこれは可能ですが、具体的な技術について議論するつもりならば、テストしたいコードを共有してください。 – sll