我如何测试MineSweepers Grid Paint方法?

时间:2016-10-15 09:55:58

标签: java junit tdd

我试图通过解决基于文本的MineSweeper游戏问题来学习TDD。其中的最后一部分是编写fillGrid方法,用于绘制Grid

我最终进入了:

public Grid fillGrid(Grid grid) {
        String[][] gridCells = grid.getGrid();

        fillBomb(grid);
        for(int i=0;i<gridCells.length;i++){
            for(int j=0;j<gridCells[0].length;j++){

                if(!constraints.checkBombsAndNumbersPresentAsRequrired(grid.getSurroundingValues(i,j)))
                {
                    if(gridCells[i][j] != "*") {
                        if(getBombCount(grid.getSurroundingValues(i, j)) != 0)
                            grid.setCells(i, j, "" + getBombCount(grid.getSurroundingValues(i, j)));
                    }
                }
            }
        }

        grid.prettyPrint( grid.getGrid() );

        return  null;
    }

在上面的代码中,我分别测试了fillBombcheckBombsAndNumbersPresentAsRequried。现在我对如何测试fillGrid本身感到震惊!

当我试图遵循TDD模式时,我写了fillGrid失败测试用例,如:

  1. 它应该只有4个炸弹(有点简易模式) - 让它失败
  2. 检查约束返回Grid是否满足MineSweeper本身
  3. 我击中的第二点。如果我要为第二点写一个测试用例,很可能,我也会在我的测试用例中检查相同的逻辑!

    有一件事我认为我使用checkBombsAndNumbersPresentAsRequrired清楚地检查了形成的数据,但是我们可以跳过在TDD中测试fillGrid,即使它有一些关键的逻辑吗?

    我在这里想念一下吗?

1 个答案:

答案 0 :(得分:0)

如果您正在尝试学习TDD,首先要学习的是在编写代码之前编写测试。这将消除“如何测试此代码”的许多问题,因为您已经有了测试。