演化架构与紧急设计: 测试驱动设计,第 2 部分
2009-11-05 00:00:00 来源:WEB开发网因此,我要针对感兴趣的边界条件编写几个测试,见清单 4:
清单 4. 因子的边界条件@Test public void factors_for_100() {
Classifier5 c = new Classifier5(100);
c.calculateFactors();
assertThat(c.getFactors(),
is(expectationSetWith(1, 100, 2, 50, 4, 25, 5, 20, 10)));
}
@Test(expected = InvalidNumberException.class)
public void cannot_classify_negative_numbers() {
new Classifier5(-20);
}
@Test public void factors_for_max_int() {
Classifier5 c = new Classifier5(Integer.MAX_VALUE);
c.calculateFactors();
assertThat(c.getFactors(), is(expectationSetWith(1, 2147483647)));
}
数字 100 看起来很有意思,因为它有许多因子。通过测试多个不同的数字,我认识到负数对于这个问题领域是没有意义的,所以编写了一个排除负数的测试(在我纠正它之前,这个测试确实会失败)。考虑到负数还让我想到了 MAX_INT:如果系统的用户需要 long 数字,我的解决方案应该怎么处理呢?我原来假设数字是整数,但是需要确保这是有效的假设。
需求收集是 “有损压缩”
请在身边找一张图片或画。假设这张图片包含 2 百万像素。如果把图片压缩到只有 2,000 像素,会发生什么?它看起来还一样吗?(如果它是 Rothko 的画,就有可能看起来一样,但是这种情况很少见)。通过删除信息实现的压缩叫作有损 压缩算法。如果要把压缩版本恢复为 2 百万像素,就需要填补缺失的像素。有时候能够猜测出正确的像素,但是不总是可以。
更多精彩
赞助商链接