我正在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());
所以基本上该方法返回一个bool,说明是否创建了一个帐户。在我的测试用例中,我希望能够调用此方法,但为了执行它,我需要设置accountNumber,名称,余额和日期。有这种方式吗?或者是添加参数到方法的最佳方法(我不想这样做)?
答案 0 :(得分:3)
重写该方法,使其需要几个Stream
作为参数。然后,当您在真实程序中调用它时,请发送Console.Out
和Console.In
作为参数。从测试用例调用时,请发送一些内存流。
在编写这种方法并且想要测试它们时,它们不应该直接依赖于控制台,而应该依赖于抽象流。然后使用依赖注入(例如,将流作为参数传入),以便在测试时能够将控制台替换为内存流。