[英]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.