マルチスレッドアプリをテストするための優れた戦略を誰かが思いついたのかどうか知りたいです。
私はmidjeを使ってたくさんのテストを行っていますが、これは関数のテストに最適です...しかし、マルチスレッドコードをテストする方法がよくわかりません。
(fact "the state is modified by a thread call"
(Thread/sleep 100)
(check-state-eq *state* nil)
(Thread/sleep 100)
(modify-state-thread-call *state* :updated-value)
(Thread/sleep 100)
(check-state-eq *state* :updated-value))
コンパイル時間のために、状態が時間内に更新されなかったためにテストが失敗することがあります。そのため、より長くスリープする必要があります。理想的には、次のようなものを書く方法が必要です。
(fact "the state is modified by a thread call"
(modify-state-thread-call *state* :updated-value)
=leads-to=> (check-state-eq *state* :updated-value))
眠りから離れます。それを行うための戦略はありますか?