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



我正在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.OutConsole.In作为参数。从测试用例调用时,请改为发送一些内存流。

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

最新更新