我正在尝试使用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();
}