演化架构与紧急设计: 测试驱动设计,第 1 部分
2009-11-05 00:00:00 来源:WEB开发网
清单 5. 测试 “数字是不是因子?”public class Classifier1Test {
@Test public void is_1_a_factor_of_10() {
assertTrue(Classifier1.isFactor(1, 10));
}
}
这项简单测试琐碎得有些愚蠢,这就是我需要的。要编译此测试,您必须有名为 Classifier1 的类,并且它有 isFactor() 方法。因此我必须先创建类的骨架结构,然后才可以得到表示测试结果不正确的红条。编写极度琐碎的单元测试可以先把结构准备就绪,然后才需要开始通过所有有意义的方法考虑问题域。我希望一次只考虑一件事,而且这使得我可以处理骨架结构,而无需担心正在解决的问题的细微差别。一旦我可以编译这段代码并且得到表示测试失败的红条,我就准备好编写代码,如清单 6 所示:
清单 6. 确定因子的方法public class Classifier1 {
public static boolean isFactor(int factor, int number) {
return number % factor == 0;
}
}
好的,这段代码很好而且很简单,并且它可以完成工作。现在我可以转到下一项最简单的任务:获得数字的因子列表。测试显示在清单 7 中:
清单 7. 下一个测试:数字的因子@Test public void factors_for() {
int[] expected = new int[] {1};
assertThat(Classifier1.factorsFor(1), is(expected));
}
清单 7 显示了我为获得因子编写的最简单测试,因此现在我可以编写使此测试通过的最简单代码(并在以后将其重构以使其更复杂)。下一个方法显示在清单 8 中:
更多精彩
赞助商链接