我对TDD相当陌生,在创建任何测试代码之前的第一个测试时遇到了麻烦。在没有任何实现代码框架的情况下,我可以随意编写我的第一个测试,但是它似乎总是被我的Java / OO问题思考方式所困扰。
例如,在我的Github ConwaysGameOfLifeExample中,我编写的第一个测试(rule1_zeroNeighbours)首先创建了一个尚未实现的GameOfLife对象。称为不存在的set方法,不存在的step方法,不存在的get方法,然后使用断言。
随着我编写了更多测试并进行了重构,这些测试也在不断发展,但最初看起来是这样的:
@Test
public void rule1_zeroNeighbours()
{
GameOfLife gameOfLife = new GameOfLife();
gameOfLife.set(1, 1, true);
gameOfLife.step();
assertEquals(false, gameOfLife.get(1, 1));
}
当我根据在早期阶段决定编写此第一项测试的方式来强制实施设计时,这感觉很奇怪。
以您理解TDD的方式可以吗?我似乎遵循TDD / XP的原则,因为我的测试和实现随着时间的推移随着重构的发展而发展,因此,如果这种最初的设计被证明是无用的,那就可以改变了,但是感觉就像我在向开发者强加一个方向。通过这种方式解决。
人们还如何使用TDD?我可以从没有GameOfLife对象开始,而只有原语和静态方法开始,进行更多的重构迭代,但这似乎太虚构了。