Я делаю ролевую игру для удовольствия и пытаюсь использовать TDD при ее разработке. Многие из примеров TDD, которые я вижу, сосредоточены на создании теста сначала, а затем на создании объектов, необходимых для прохождения теста.
Например:
[Test]
public void Character_WhenHealthIsBelowZero_IsDead()
{
// create default character with 10 health
Character character = new Character();
character.SubtractHealth(20);
Assert.That(character.IsAlive, Is.EqualTo(false));
}
Поэтому на основе этого я создам класс символов и соответствующие свойства/методы. Это кажется прекрасным, и все, но должен ли мой классный дизайн действительно выйти из постоянного совершенствования моих тестов? Это лучше, чем сопоставление возможных объектов, которые моя игра будет необходима раньше времени? Например, я обычно думаю о базовом классе символов, а затем подклассах, таких как Wizard, Fighter, Theif.
Или сбалансированный подход - путь? Один, где я сопоставляю возможные классы и иерархию, которые мне понадобятся, но сначала пишу тесты, чтобы убедиться, что они действительно нужны?