как проверить этот класс с тестированием JUnit? - PullRequest
0 голосов
/ 13 октября 2019

У меня есть игра TicTacToe на языке Java, и я должен выполнить тестовые примеры Junit для этого класса Game, потому что мне нужно применить тестирование мутаций для этого приложения. Может кто-нибудь помочь мне написать хорошие тестовые случаи.

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();
    }
}

}

1 Ответ

0 голосов
/ 13 октября 2019

это очень простое приложение, поэтому не так много возможных тестов.

Сначала вы должны сосредоточиться на тестировании публичного API класса, но в вашем случае у вас есть только main. Во-вторых, вы зависите от внешнего ввода, что затрудняет тестирование вашего кода ...

Я рекомендую вам прочитать несколько статей о том, как сделать ваш код более тестируемым. Например:

Несколько стартеров:

  1. Создать ответственный классдля запуска приложения (имеющего метод main): назовем его class Application
  2. Make Game startGame() метод получает в качестве входных данных функцию, которая возвращает ввод (в коде PROD вы будете использовать BufferedReaderВ тестовом коде вы можете использовать поток, например,
  3. , то же самое для метода addPlayers
  4. Извлечь метод для каждой игры (в основном код внутри do...while), чтобы вы моглиможно также проверить это

и, возможно, вы найдете еще несколько задач

ps: но в конце концов, с такой базовой кодовой базой, это своего рода излишнее ...

...