如何对需要用户从控制台输入进行输入的类进行单元测试?

时间:2019-05-02 08:34:40

标签: c# unit-testing console nunit user-input

我正在尝试使用Nunit对一个类进行单元测试,该类需要用户从控制台输入该方法来执行功能。但是,当进行单元测试时,我无法设置控制台输入。我希望能够以编程方式设置输入值,而无需更改当前方法从控制台读取的功能。我相信我应该模拟用户输入,但是不确定如何在不删除Conosle.Readline();的情况下实现此功能。

class Clock
{
    public Clock()
    {
        _timer.Elapsed += Tick;
        _timer.AutoReset = true;

        Console.WriteLine("Commands:\n[s]tart\n[p]ause\n[r]eset\n[i]ncrement\n[t]ime");

        Inputs();
    }

    public void Inputs()
    {
        _input = Console.ReadLine(); // normal input method which I would like to change

        switch (_input)
        {
            case "s":
                Start();
                break;
            case "p":
                Stop();
                break;
            case "r":
                Reset();
                break;
            case "i":
                IncrementTime();
                break;
            case "t":
                Console.WriteLine(GetTime());
                break;       
        }
        Inputs();
    }

0 个答案:

没有答案