NUnit测试 - 循环 - C#

时间:2012-01-22 14:11:31

标签: c# visual-studio-2010 unit-testing tdd nunit

我是TDD新手并尝试解决问题。

在我的任务中,我必须从控制台读取一堆字符串并将它们添加到字符串类型列表中。在我的测试方法中,我编写了一个for循环来读取字符串并传递给要添加的方法。我不知道如何测试这个过程,有点困惑。任何帮助将不胜感激。谢谢。

循环测试方法。

   for(int i=0;i<robot.noOfCommands;i++)
        {
            robot.readCommand(Console.ReadLine());

        } 

我正在用C#.Net

编写代码

2 个答案:

答案 0 :(得分:7)

单元测试永远不需要人工交互,因此使用Console.ReadLine()是一个重要的禁忌。

您可能想要的是为您的robot对象提供一些预定义的输入。然后你可以测试(Assert),结果是你所期望的。这是单元测试的本质。

答案 1 :(得分:6)

为了让您的测试正常运行,您需要伪造对外部服务的依赖,在本例中为System.Console。您想要测试(或类)的方法需要能够提供不同类型的此依赖项 - 这样伪造的方法也可以工作。

使用Console.ReadLine您真正需要的是TextReader。您的循环方法可能如下所示:

public void MyMethod(TextReader reader)
{
    for (int i = 0; i < robot.noOfCommands; i++)
    {
        robot.readCommand(reader.ReadLine());
    }
}

在实际应用中,您将使用MyMethod(Console.In)进行调用。在测试中,您可以使用预定义的命令准备假读者(例如,从资源文件中读取)。