簡體   English   中英

如何用 JUnit 測試這個 class 測試?

[英]how to test this class with JUnit testing?

我有 java 語言的井字游戲,我必須為此游戲 class 進行 Junit 測試用例,因為我需要為此應用程序應用突變測試。 誰能幫我寫出好的測試用例。

public class Game {
private Board board;
private Queue<Player> players;

public Game() {
    board = new Board();
    players = new LinkedList<>();

    addPlayers();

}

private void addPlayers() {
    players.add(new Player("X"));
    players.add(new Player("O"));
}


private void startGame() throws IOException {
 do {
     Player currentPlayer = players.remove();
     System.out.println("Enter position for Player "+currentPlayer.toString());

     java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

     board.placeMarker(currentPlayer,new Position(Integer.parseInt(in.readLine()),Integer.parseInt(in.readLine())));
     players.add(currentPlayer);
     System.out.println(board.toString());
     if(board.hasWon(currentPlayer)){
         break;
     }
 }while (board.hasEmptyPosition());
}




public void main(String[] args) {
    Game game= new Game();
    try {
        game.startGame();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

這是一個非常簡單的應用程序,因此沒有太多可能的測試要做。

首先,您應該專注於測試 class 的公共 API,但在您的情況下,您只有main 其次,你依賴於外部輸入,這使得測試你的代碼變得更加困難......

我建議您閱讀一些有關如何使您的代碼更可測試的文章。 例如:

一些首發:

  1. 創建一個 class 負責啟動應用程序(具有 main 方法):我們稱之為 class Application
  2. 使 Game startGame()方法接收 function 作為輸入,該 function 返回輸入(在您的 PROD 代碼中,您將使用 BufferedReader,在測試代碼中您可以使用 stream 例如
  3. addPlayers方法的想法相同
  4. 為每次播放提取一個方法(基本上是do...while中的代碼),以便您也可以對其進行測試

也許你可以找到更多的任務

ps:但最后,有了這樣一個基本的代碼庫,這有點矯枉過正......

暫無
暫無

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

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