我正在C#控制台应用程序中编写一个程序,并且在某些方法中,我有Console.ReadLine()和Console.WriteLine()。我想知道如何在测试用例中给出输入。
例:
Console.WriteLine("Enter account number: ");
accountNumber = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter name: ");
cStringName = Convert.ToString(Console.ReadLine());
name = cStringName;
Console.WriteLine("Enter balance: ");
balance = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter Date: ");
dateCreated = Convert.ToString(Console.ReadLine());
所以基本上该方法返回一个布尔值,说明是否创建了帐户。在我的测试用例中,我希望能够调用此方法,但为了执行它,我需要设置 accountNumber、名称、余额和日期。有没有某种方法可以做到这一点?还是最好的方法只是向方法添加参数(我不想这样做)?
重写方法,使其需要几个Stream
作为参数。然后,当您在实际程序中调用它时,发送Console.Out
并Console.In
作为参数。从测试用例调用时,请改为发送一些内存流。
在编写此类方法并且想要测试它们时,它们不应直接依赖于控制台,而应依赖于抽象流。然后,使用依赖注入(例如,将流作为参数传入)能够在测试时将控制台替换为内存流。