在 boost::state chart 中记录状态更改



对于单元测试,我尝试在启动状态机事件后记录所有状态事务。
例如,如果我post_event A 到async_state_machine的fifo_scheduler,状态机将经历状态 B、C,然后回到 D。由于无法记录所有事件状态,我只能在进行单元测试时检查它是否在完成后进入状态 D :-(

唯一能想到的就是修改我创建的所有状态的所有反应方法或构造函数(从 simple_state 派生),以便它们进行记录。 当我真的想在调用状态的 react() 方法之前挂接到async_state_machine时,这似乎有点笨拙......

当我真的想在调用状态的 react() 方法之前钩入async_state_machine时,这似乎有点黑客......

你为什么不呢?创建一个扩展async_state_machine的新类,并将所需的钩子添加到其中。如果访问是一个问题(可能会有问题),请在包含状态图之前进行壮观的#define private public(或protected黑客攻击)。

我已经做了类似的事情,将局部变量添加到状态的历史中,并添加了一种新的状态-ctor,所以我有了真正的完整历史。

添加了不同的技巧。 每个状态都是在被提升状态机使用之前创建的(然后在进入下一个状态后销毁......似乎效率低下),因此每个状态都派生自另一个在其构造函数中具有回调的类。似乎仍然有点黑客...希望boost++有一个更干净的方法来做到这一点:-P

最新更新