2011-05-16 87 views
1

對於單元測試,我試圖在啓動狀態機事件後記錄所有狀態事務。
例如,如果我post_event A到async_state_machine的fifo_scheduler,狀態機將通過狀態B,C,然後回到D. 不能記錄所有事件狀態,我只能檢查它是否到達狀態D完成後做單元測試:-(在boost :: statechart中記錄狀態變化

我能想到的唯一的事情就是修改所有我創建的狀態(派生關閉simple_state)的所有反應方法或構造函數,以便他們做記錄。當我真的想在調用狀態的react()方法之前掛入async_state_machine時,這似乎有點冒失...

回答

0

這似乎有點hackish,當我真的想要在它調用一個狀態的react()方法之前掛鉤到async_state_machine中...

你爲什麼不呢?創建一個新類,擴展async_state_machine並添加所需的鉤子。如果訪問是一個問題(這可能會是),做不斷壯觀#define private public(或之前protected黑客,包括狀態圖。

我已經做過類似的局部變量添加到一個國家的歷史,並添加了一種新的東西國有構造函數,所以我有實充滿了歷史。

+0

謝謝,狐狸。這是一個很好的替代方案。 仍然很黑。似乎應該重新設計Boost的狀態圖,以便您可以更輕鬆地獲取此信息。如果你做了這個醜陋的解決辦法,似乎別人會想,以及... – kenyee 2012-01-23 17:08:07

0

增添了不同的黑客攻擊。它的使用由升壓狀態機(然後摧毀它進入到下一個狀態......前後每個國家創建看起來如此低效),所以每個州從具有在它的構造函數的回調另一個類的。 似乎仍然有點hackish的...希望提升++有一個更清潔的方式來做到這一點:-P