Estoy haciendo un juego de rol para divertirme e intentar usar TDD mientras lo desarrollo. Muchos de los ejemplos de TDD que veo se enfocan primero en crear la prueba y luego en crear los objetos necesarios para que pase la prueba.¿TDD significa no pensar en el diseño de clase?
Por ejemplo:
[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));
}
Así que basado en esto voy a crear la clase de caracteres y propiedades apropiadas/métodos. Esto parece estar bien y todo, ¿pero debería mi diseño de clase realmente salir de refinar continuamente mis pruebas? ¿Es mejor que trazar los posibles objetos que mi juego necesitará antes de tiempo? Por ejemplo, normalmente pensaría en una clase de personaje base, luego en subclases como Wizard, Fighter, Theif.
¿O es un enfoque equilibrado el camino a seguir? Una en la que planifico las posibles clases y la jerarquía que necesitaré, pero primero escribir pruebas para verificar que realmente se necesitan.
Desafortunadamente, el ejemplo de código que proporcionó es la forma en que muchos programadores ágiles escriben su código (citando el * Principio de uso único *), que * no * es el camino a seguir. No todo, pero demasiados. –