如何编写TDD测试以从Java类中删除字段?

时间:2013-03-26 09:29:44

标签: java tdd

我有一个包含三个字段的Java类。我意识到由于需求的变化,我只需要其中两个。

理想情况下,我会在修改代码之前编写一个失败的测试用例。

是否有标准方式,或者我应该忽略TDD来执行此任务?

5 个答案:

答案 0 :(得分:2)

此字段的删除是否会改变类的行为?如果没有,只需删除该字段并检查该类是否仍然正常工作(也就是说,通过您应该已经写过的测试) TDD原则是编写“由测试设计”的代码。这可能听起来很愚蠢,但意味着您应该编写的第一个类是测试类,测试被测试类的行为。你应该迭代几步:

  1. 写下测试。它不应该编译(你没有测试的类/类)
  2. 使测试编译。它应该失败(你只有空类不能满足测试中的断言)
  3. 让测试以最简单的方式传递(通常,只是让您正在测试的方法返回预期值)
  4. 优化/重构/推广测试中的类,重新运行测试(它仍然应该通过)。这一步应该非常快,通常不到2分钟。
  5. 从步骤2开始重复,直到几乎自然地出现所需的行为。

答案 1 :(得分:2)

那是重构,所以你不需要从失败的测试开始。

  1. 使用该字段查找所有方法。
  2. 确保单元测试涵盖了它们。
  3. 重构方法,使其不再使用该字段。
  4. 删除该字段。
  5. 确保测试正在运行。

答案 2 :(得分:1)

如果您有所需的所有字段的详尽列表,您可以通过反思比较该字段列表:

yourClassName.getClass().getDeclaredFields() vs your list of fields

答案 3 :(得分:1)

为没有要删除的字段的构造函数编写测试。

显然只有在构造函数将字段的值作为参数时才有效。

答案 4 :(得分:1)

  • 删除所有涵盖已移除功能的测试(根据3条TDD规则,这不算作“编写生产代码”)。

  • 删除剩余测试中对过时字段的所有引用。如果其中任何一个失败,则允许您编写所需的生产代码以使其通过。

  • 一旦您的测试再次变为绿色,所有后续修改都属于“重构”类别。您可以在此处删除(现在未使用过的)字段。