Модульное тестирование входов консоли и случайных чисел - PullRequest
1 голос
/ 04 июня 2011

У меня есть логический модуль для пошаговой игры (пока нет пользовательского интерфейса), который использует асинхронный пользовательский ввод (анализируется с консоли, пока не будет выполнен настоящий пользовательский интерфейс), а в некоторых случаях генерирует случайные числа («броски кубика»)и вносит изменения в модель состояния игры на основе входных данных и случайных чисел.

Чтение этой цепочки и этой цепочки , мне было интересно, возможно ли этоиспользовать что-то похожее.В моей игровой логике есть один случайный экземпляр, поэтому обменять его должно быть относительно просто.

Так что же мне нужно сделать?

  • Поменять GameLogic.Random наIRandom, и вставьте в него случайную или предварительно сгенерированную последовательность в зависимости от того, тестирую ли я
  • Поменяйте Console.ReadLine () с IConsole.ReadLine () везде в моем анализаторе команд, чтобы у меня не былонабирать его каждый раз
  • Заменить Console.WriteLine () на IConsole.WriteLine (), чтобы он печатался в файл, где я могу прочитать результаты

А потом яможно использовать мои занятия из модульного теста?Это все ??

Ответы [ 2 ]

3 голосов
/ 04 июня 2011

Да, это все, но вам даже не нужно этого делать, если вы не хотите.

Вам не нужно создавать интерфейс IConsole, потому что, в некотором смысле, он уже существует. Вы можете использовать TextReader для ввода и TextWriter для вывода. В реальном приложении вы передаете Console.In и Console.Out. В тестировании вы можете использовать StringReader и StringWriter.

Вам также не нужно создавать IRandom, если вы не хотите сами вводить числа, и вам достаточно Random, инициализированный для постоянного семени.

1 голос
/ 04 июня 2011

Одним словом: да.За исключением того, что может быть лучше, чтобы ваша фиктивная реализация IConsole.WriteLine() просто сохраняла значения, которые ей даны, в набор строк, которые вы можете прочитать обратно из макета, вместо того, чтобы пытаться записать файл на диск и затем найтии чтение этого файла обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...