对于单元测试,我试图在启动状态机事件后记录所有状态事务 例如,如果我将post_event A发送到async_state_machine的fifo_scheduler,则状态机将通过状态B,C,然后返回到D. 如果不能记录所有事件状态,我只能在进行单元测试后检查它是否进入状态D: - (
我唯一能想到的是修改我创建的所有状态(从simple_state派生)的所有反应方法或构造函数,以便他们进行记录。当我真的想在调用状态的react()方法之前挂钩到async_state_machine时,这似乎有些过时......
答案 0 :(得分:0)
当我真的想在调用状态的react()方法之前挂钩async_state_machine时,这看起来有点像hackish ......
你为什么不呢?创建一个扩展async_state_machine
的新类,并将所需的钩子添加到其中。如果访问是一个问题(可能会出现问题),请在包含状态图之前进行壮观的#define private public
(或protected
黑客攻击。
我已经做了类似的事情,将局部变量添加到状态的历史中,并添加了一种新的状态,因此我拥有真实的完整历史记录。
答案 1 :(得分:0)
添加了一个不同的黑客。每个状态都是在它被boost状态机使用之前创建的(然后在它进入下一个状态后被破坏......看起来效率很低),所以每个状态都是从另一个在其构造函数中有回调的类派生的。 仍然看起来有点hackish ...希望boost ++有一个更清洁的方法来做到这一点:-P