私はC#
ユニットテスト機能を使用するのが初めてです。state
のパターンを使用してステートマシンを作成しましたGoF
public class Program
{
private static void Main()
{
var c = new Context(SimpleStateMachine.StateInit);
c.Run();
Console.Read();
}
}
public static class SimpleStateMachine
{
public static void StateInit(Context context)
{
// ... do some init
context.State = StateConfigure;
}
public static void StateConfigure(Context context)
{
// do some conifigure
context.State = StateMeasurement;
}
public static void StateMeasurement(Context context)
{
// do some measurement
context.State = GetMeasurement()? StateConfigure : StateFinished;
}
public static void StateFinished(Context context)
{
// do some deinit
context.State = (Action<Context>)null;
}
}
public class Context
{
public Action<Context> State { get; internal set; }
public Context(Action<Context> state)
{
State = state;
}
public void Run()
{
while (State != null)
{
State(this);
}
}
}
そのようなステートマシンを適切にテストする方法は? この具体的なステート マシンは、単なる実装例です。適切な実装には、遷移の状態と条件がさらに多くあります。