我正在做Minesweeper Kata http://codingdojo.org/cgi-bin/wiki.pl?KataMinesweeper
我决定从网格创建开始,并对组织增长测试基础提出一些问题。
我做的第一件事就是在MineSweeperTest类中创建测试(并实现他们需要的东西):
@Test
public void testCreateGridWithRightDimensions() {
String[][] grid = new MineSweeper().toGrid(field);
// ...
}
下一个
@Test
public void testFillGridWithFieldData() {
String[][] grid = new MineSweeper().toGrid(field);
// ...
}
然后
@Test
public void fillMultipleGrids() {
String[][] grid = new MineSweeper().toGrid(fields);
// ...
}
现在,由于我有工作领域进行网格翻译工作,我将稍微清理一下我的解决方案,并且几乎没有问题:
现在我使用String [] []作为网格,我想介绍Grid对象的新概念。这是否意味着我应该将这些测试从MineSweeperTest移动到GridTest并更改测试以使用Grid:
new Grid(field);
并在将来实施类似的内容:
grid.isSafeField(row, col);
网格的内部结构怎么样?我不希望我的sweeper类知道我的Grid基于字符串数组的事实。 如果是这样,我目前的测试变得无用,需要更改,但我看不到这样做的方法。
如果你能指出我正确的方向,我将不胜感激。
答案 0 :(得分:1)
我同意使用Grid
代替String[][]
可能是正确的方法。要在Grid
上执行断言,您可以将它与使用工厂构造函数或Hamcrest匹配器在测试中创建的Grids
进行比较。
以下是测试的外观:
@Test
public void sweepingAMineShouldMakeItDissapear() {
Grid unswept = Grid.grid(".*",
"..");
unswept.sweep(2, 1);
assertEquals(unswept, grid("..",
"..");
}
或者你可能对隐藏的地雷与露出的地雷有不同的符号。