質問: スレッドセーフのユニットテスト? 私はクラスと多くの単体テストを作成しましたが、スレッドセーフにしませんでした。ここで、クラススレッドを安全にしたいのですが、それを証明してtddを使用するために、リファクタリングを開始する前に、失敗する単体テストをいくつか作成したいと思います。これを行うための良い方法はありますか?私の最初の考えは、いくつかのスレッドを作成し、それらすべてに安全でない方法でクラスを使用させることです。十分な数のスレッドでこれを十分な回数行うと、それが壊れることを確認する必要があります。
回答: そこで役立つ2つの製品があります。 マイクロソフトチェス タイプモックレーサー どちらも(ユニットテストを介して)コードのデッドロックをチェックし、チェスは競合状態もチェックすると思います。両方のツールの使用は簡単です。簡単な単体テストを作成し、コードを数回実行して、コードでデッドロック/競合状態が発生する可能性があるかどうかを確認します。編集:googleは、実行時(テスト中ではない)に競合状態をチェックするツールをリリースしました。これは thread-race-test =。 現在の実行のみを分析し、上記のツールのような考えられるすべてのシナリオを分析するわけではないため、すべての競合状態を検出することはできませんが、発生した競合状態を見つけるのに役立つ場合があります。更新:typemockサイトにはracerへのリンクがなくなり、過去4年間更新されませんでした。プロジェクトは終了したと思います。