我目前有大约10种测试,只要路径或墙壁上有一块,俄罗斯方块就不会向左移动。现在,我将必须测试正确动作的相同行为。
如果我只复制已经存在的10个用于左移动的测试,并仅进行所需的更改并对代码本身也做同样的操作,那是否太糟糕了?还是即使逻辑基本相同,我还是应该从头开始再次进行每个测试?
尝试采用您尚未提到的第三种方法,即重构代码,以便可以在所有10个测试之间共享该测试的一种实现。
关键是,复制代码几乎总是错误的事情。在此示例中,您可以将检查代码重构为一个名为例如的方法IsTetrisPieceUnableToMoveLeftBecauseOfAPieceOrAWall。当为单元测试编写一些“共享”功能时,我总是会使用非常具有描述性的方法名称,因为这样可以非常清楚地说明正在执行/测试的内容。
IsTetrisPieceUnableToMoveLeftBecauseOfAPieceOrAWall