添加命令行输入以在C#中测试方法

时间:2013-11-09 19:06:05

标签: c# unit-testing console-application readline

我正在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,名称,余额和日期。有这种方式吗?或者是添加参数到方法的最佳方法(我不想这样做)?

1 个答案:

答案 0 :(得分:3)

重写该方法,使其需要几个Stream作为参数。然后,当您在真实程序中调用它时,请发送Console.OutConsole.In作为参数。从测试用例调用时,请发送一些内存流。

在编写这种方法并且想要测试它们时,它们不应该直接依赖于控制台,而应该依赖于抽象流。然后使用依赖注入(例如,将流作为参数传入),以便在测试时能够将控制台替换为内存流。