Тест NUnit - циклы - C # - PullRequest
       26

Тест NUnit - циклы - C #

1 голос
/ 22 января 2012

Я новичок в TDD и пытаюсь решить проблему.

В моей задаче я должен прочитать кучу строк из консоли и добавить их в список типов строк.В моем тестовом методе я написал цикл for для чтения строк и передачи в метод для добавления.Я не знаю, как проверить этот процесс, немного запутался.Любая помощь будет оценена.Благодарю.

Петля в методе испытаний.

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

        } 

Я пишу код на C # .Net

Ответы [ 2 ]

7 голосов
/ 22 января 2012

Модульные тесты никогда не должны требовать участия человека, поэтому использование Console.ReadLine () является основным нет-нет.

То, что вы, вероятно, хотите, это заполнить ваш robot объект некоторым предопределенным вводом. Затем вы можете проверить (Assert), что результат - это то, что вы ожидаете. В этом суть модульного тестирования.

6 голосов
/ 22 января 2012

Чтобы ваш тест работал, вам нужно фальшивая зависимость от внешнего сервиса, которая в данном случае равна 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). В тесте вы можете подготовить поддельный ридер (например, чтение из файла ресурсов) с помощью предопределенных команд.

...