>创建失败的测试
做最简单的事情可能会通过测试
>添加更多变体的测试和重复
>当模式出现时的重构
有了这种方法,你可以想到所有的案例(至少在我看来),但是我想知道我是否在这里太严格了,如果有可能“想一想”一些场景,而不是简单的发现。
例如,我正在处理一个文件,如果它不符合某种格式,我将抛出一个InvalidFormatException
所以我的第一个测试是:
@Test void testFormat(){ // empty doesn't do anything nor throw anything processor.validate("empty.txt"); try { processor.validate("invalid.txt"); assert false: "Should have thrown InvalidFormatException"; } catch( InvalidFormatException ife ) { assert "Invalid format".equals( ife.getMessage() ); } }
我运行它,它失败,因为它不抛出异常。
所以接下来我想到的是:“做最简单的事情是可能的”,所以我:
public void validate( String fileName ) throws InvalidFormatException { if(fileName.equals("invalid.txt") { throw new InvalidFormatException("Invalid format"); } }
卫生署! (虽然真正的代码有点复杂,我发现自己做了几次这样的事情)
我知道我必须最终添加另一个文件名和其他测试,这将使这种方法不切实际,这将迫使我重构一些有意义的东西(如果我明白的是TDD的意义,发现模式的用法揭幕)但是:
问:我是否采取太字面上的“做最简单的事情”的东西?