1

特定のメソッドについて、テストケースを作成して、複数のスレッドが同時に実行されているときの動作を確認したいと考えています。ばかげているように聞こえるかもしれませんが、そのようなシナリオを作成できるかどうか疑問に思っているだけですか?

4

3 に答える 3

1

単体テスト コードもスレッドと見なしてください。マルチスレッド環境で何かをテストしようとしたとき、一般的に言えば、次のことを行いました。

  • 単体テスト スレッドで作業スレッド (テストされたメソッドを含むスレッドと他のスレッド) を手動で開始し、
  • 単体テストスレッドを一定時間スリープさせるか、他のスレッドを待ってから、結果を確認しました。

問題はそれでthe unit test thread may not give up execution to the othersあり、それがあなたが何らかの形でそれを強制しなければならない理由です. プロセッサ時間がスレッドにどのように割り当てられるかを「直接」制御することはできないため、スレッドを開始して問題を「解決」する必要があります。

于 2013-09-02T21:34:53.197 に答える
1

実際には、テスト ケースでスレッドを開始することもできますが、実行は非決定論的です。

役立つ可能性のある並行性テスト フレームワークがいくつかあるようです。特殊な技術を使用してスレッドの動作を制御し、競合状態やその他の悪いことを引き起こします。

簡単なチェックを行ったところ、MultithreadedTCが見つかりました。

おそらく、これはあなたを正しい軌道に乗せます。

于 2013-09-02T21:38:14.687 に答える