0

我正在 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、name、balance 和 date。有没有办法做到这一点?或者只是向方法添加参数的最佳方法(我不喜欢这样做)?

4

1 回答 1

3

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

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

于 2013-11-09T19:18:10.673 回答