对于单元测试,我试图在启动一个状态机事件之后记录所有的状态事务。
例如,如果我将A post_event到async_state_machine的fifo_scheduler,状态机将经历状态B,C,然后返回到D。由于无法记录所有的事件状态,我只能在执行单元测试时检查它是否在完成后进入状态D :-(
我唯一能想到的就是修改我创建的(从simple_state派生的)所有状态的所有react方法或构造器,以便它们进行记录。当我真的想在async_state_machine调用一个状态的react()方法之前挂接到它时,这看起来有点老土……
发布于 2011-05-17 12:03:06
当我真的想在async_state_machine调用一个状态的react()方法之前挂接到它时,这看起来有点老土……
你为什么不呢?创建一个扩展async_state_machine的新类,并在其中添加所需的钩子。如果访问是一个问题(很可能会是),那么在包含statechart之前进行一次壮观的#define private public (或protected )。
我做了一些类似的事情,将局部变量添加到一个状态的历史中,并添加了一种新的状态量,这样我就有了真正的完整历史。
发布于 2011-05-18 20:02:32
添加了一个不同的hack。每个状态都是在boost状态机使用它之前创建的(然后在它转到下一个低效的state...seems之后销毁),所以每个状态都是从另一个类派生出来的,该类的构造函数中有一个回调。看起来hackish...wish boost++有一种更干净的方式来做这件事:
https://stackoverflow.com/questions/6022343
复制相似问题