我在ExUnit中編寫了一些測試來說明不同的Supervisor策略如何工作。我曾計劃通過故意導致產生的進程失敗來測試結果,然後測試重新啓動的進程的輸出。編寫受監督進程不會失敗的測試
到目前爲止,我一直沒有成功地創建通過測試,因爲初始過程失敗導致測試失敗。我試圖在Supervisor/GenServer實現和測試實現中捕獲錯誤(try/catch),但我無法捕獲任何錯誤並避免測試失敗。
- 是否有任何方法來捕獲這些錯誤,以便它們不會觸發測試失敗?
- 是否有更好/不同的方法來測試不同的主管策略?
謝謝!
我很難確定Process.flag應該在哪裏。目前,鏈接結構如下:測試 - >管理員 - > GenServer。測試然後導致GenServer發出ArgumentError並崩潰。我在捕獲除測試級別以外的任何級別的錯誤方面都沒有成功。 在測試級別進行捕獲時,我已經在測試模塊中初始化GenServer並將其提供給Supervisor。我遇到的問題是GenServer現在已經在運行,不能作爲工作者啓動。 關於如何構建呼叫的任何想法? – arami
@arami:看一下https://github.com/mprymek/suptest - 你必須從mix.exs中刪除應用程序模塊,這樣應用程序不會自動啓動,然後手動啓動它(請參閱https:// github。 com/mprymek/suptest/blob/master/test/suptest_test.exs) –
謝謝米羅斯拉夫! – arami