TDD是否意味着不考虑课堂设计?

mik*_*dev 10 c# tdd unit-testing

我正在制作角色扮演游戏以获得乐趣并尝试在开发时使用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));
}
Run Code Online (Sandbox Code Playgroud)

所以基于此我将创建字符类和适当的属性/方法.这似乎很好,但是我的班级设计真的应该不断改进我的考试吗?这比制定我的游戏提前需要的可能对象更好吗?例如,我通常会想到一个基本的Character类,然后是子类,例如Wizard,Fighter,Theif.

或者是一种平衡的方法?我在哪里绘制出我需要的可能的类和层次结构,但首先编写测试来验证它们实际上是否需要?

wom*_*omp 6

我想你错过了TDD的观点.TDD不是关于编写测试 - 它是关于设计你的类是可测试的.这自然导致更好的设计和实现.

听起来你正在倒退.

你的步骤应该是:

  1. 设计您的域模型
  2. 设计你的课程
  3. 写一些测试
  4. 实现一些类逻辑
  5. 重构您的类,以便在必要时使它们更易于测试
  6. 重复步骤3-5


Car*_*ter 6

我的班级设计真的应该不断完善我的测试吗?

是.

TDD是否意味着不考虑课堂设计?

绝对不.这意味着在编写测试过程中考虑类设计,以及代码的其余部分.在Red-Green-Refactor TDD生命周期中,类设计正在发挥作用.


Rob*_*vey 5

我认为通常(通过TDD纯粹主义者)假设程序员通过编写测试设计应用程序已经了解设计和架构.否则,你可以通过编写测试来放弃任何设计原则,将自己描绘成编程混乱和无政府状态.

因此,编写应用程序"首先测试"的开发人员已经对他的最终类结构将会是什么样子有一个公平的想法,并且该视觉指导他在编写测试时.