我是TDD新手并尝试解决问题。
在我的任务中,我必须从控制台读取一堆字符串并将它们添加到字符串类型列表中。在我的测试方法中,我编写了一个for循环来读取字符串并传递给要添加的方法。我不知道如何测试这个过程,有点困惑。任何帮助将不胜感激。谢谢。
循环测试方法。
for(int i=0;i<robot.noOfCommands;i++)
{
robot.readCommand(Console.ReadLine());
}
我正在用C#.Net
编写代码答案 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)
进行调用。在测试中,您可以使用预定义的命令准备假读者(例如,从资源文件中读取)。