1

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

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

4

2 回答 2

0

当我真的想在它调用状态的 react() 方法之前挂钩到 async_state_machine 时,这似乎有点骇人听闻......

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

我做了类似的事情,将局部变量添加到状态的历史中,并添加了一种新的 state-ctor,这样我就有了真实的完整历史。

于 2011-05-17T04:03:06.217 回答
0

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

于 2011-05-18T12:02:32.460 回答