簡體   English   中英

Java Junit 4測試用例,用於井字游戲8 x 8板的繪制

[英]Java Junit 4 test case for draw for tic tac toe 8 by 8 board

嗨,我在創建測試用例時遇到了麻煩,我制作了一個8 x 8的井字游戲板,用戶在其中輸入0到7的行和列數字,而播放器x則排在第一位。 我想知道是否有人可以幫助我弄清楚如何創建測試用例以檢查抽簽。

 package cpsc.tictac.test;

 import org.junit.Test;
 import static org.junit.Assert.*;

public class TestGameBoard {



    /************************************************************

     Test checkSpace


     ************************************************************/

    @Test
    public void testcheckSpace_row1_column10() {

        GameBoard gb = new GameBoard();
        BoardPosition b = new BoardPosition(1, 10, 'X');
        assertFalse(gb.checkSpace(b));


    }

    /************************************************************

     Test checkWinner

     ************************************************************/

    @Test
    public void testcheckforWinner_row1() {
        BoardPosition b = new BoardPosition(0, 0, 'X');
        BoardPosition b1 = new BoardPosition(0, 1, 'X');
        BoardPosition b2 = new BoardPosition(0, 2, 'X');
        BoardPosition b3 = new BoardPosition(0, 3, 'X');
        BoardPosition b4 = new BoardPosition(0, 4, 'X');
        GameBoard gb = new GameBoard();
        gb.placeMarker(b);
        gb.placeMarker(b1);
        gb.placeMarker(b2);
        gb.placeMarker(b3);
        gb.placeMarker(b4);

        assertTrue(gb.checkForWinner(b4));

    }

@Test
public void testcheckforWinner_column1() {
    BoardPosition b = new BoardPosition(0, 0, 'X');
    BoardPosition b1 = new BoardPosition(1, 0, 'X');
    BoardPosition b2 = new BoardPosition(2, 0, 'X');
    BoardPosition b3 = new BoardPosition(3, 0, 'X');
    BoardPosition b4 = new BoardPosition(4, 0, 'X');
    GameBoard gb = new GameBoard();
    gb.placeMarker(b);
    gb.placeMarker(b1);
    gb.placeMarker(b2);
    gb.placeMarker(b3);
    gb.placeMarker(b4);

    assertTrue(gb.checkForWinner(b4));

   }


@Test
public void testcheckforWinner_diagonal1() {
    BoardPosition b = new BoardPosition(1, 1, 'X');
    BoardPosition b1 = new BoardPosition(2, 2, 'X');
    BoardPosition b2 = new BoardPosition(3, 3, 'X');
    BoardPosition b3 = new BoardPosition(4, 4, 'X');
    BoardPosition b4 = new BoardPosition(5, 5, 'X');
    GameBoard gb = new GameBoard();
    gb.placeMarker(b);
    gb.placeMarker(b1);
    gb.placeMarker(b2);
    gb.placeMarker(b3);
    gb.placeMarker(b4);

    assertTrue(gb.checkForWinner(b4));
}



    /************************************************************

     Test checkDraw

     ************************************************************/

    @Test
    public void testcheckForDraw() {



             NEED HELP HERE





        }
    }

在我的程序中,我檢查抽獎的方式是

 public boolean Draw() {
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            if (table[i][j] == ' ')
                return false;
        }
    }
    return true;
}

查看您的Draw()方法(順便說一句,避免使用以大寫字母開頭的方法),您需要一個沒有任何玩家獲勝的全牌。

private char[][] boardWithDraw = 
   {{'X', '0', 'X', '0', 'X', '0', 'X', '0'},
    {'0', 'X', '0', 'X', '0', 'X', '0', 'X'},
    {'X', '0', 'X', '0', 'X', '0', 'X', '0'},
    {'0', 'X', '0', 'X', '0', 'X', '0', 'X'},
    {'0', 'X', '0', 'X', '0', 'X', '0', 'X'},
    {'X', '0', 'X', '0', 'X', '0', 'X', '0'},
    {'0', 'X', '0', 'X', '0', 'X', '0', 'X'},
    {'X', '0', 'X', '0', 'X', '0', 'X', '0'}};

正如您所看到的,對角線上的相同唱歌不超過4個,行/列的更少。 這是平局。

現在,您只需遍歷該2D數組,並使用此輸入中的BoardPosition填充您的GameBoard

定義一些算法,該算法將生成此數組,這會使您的測試非常不可讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM