1

私は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);
        }
    }
}

そのようなステートマシンを適切にテストする方法は? この具体的なステート マシンは、単なる実装例です。適切な実装には、遷移の状態と条件がさらに多くあります。

4

1 に答える 1