【问题标题】:how to test this class with JUnit testing?如何使用 JUnit 测试来测试这个类?
【发布时间】:2020-02-10 02:32:18
【问题描述】:

我有 Java 语言的井字游戏,我必须为这个游戏类做 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();
    }
}

}

【问题讨论】:

    标签: java testing junit mutation mutation-testing


    【解决方案1】:

    这是一个非常简单的应用程序,所以没有太多可能的测试要做。

    首先,您应该专注于测试一个类的公共 API,但在您的情况下,您只有 main。其次,你依赖于外部输入,这使得测试你的代码变得更加困难......

    我建议您阅读一些有关如何使您的代码更可测试的文章。例如:

    一些首发:

    1. 创建一个负责启动应用程序的类(具有main方法):我们称之为类Application
    2. Make Game startGame() 方法接收一个返回输入的函数作为输入(在您的 PROD 代码中,您将使用 BufferedReader,在测试代码中您可以使用例如流
    3. addPlayers 方法的想法相同
    4. 为每次播放提取一个方法(基本上是do...while内的代码),以便您也可以对其进行测试

    也许你可以找到更多的任务

    ps:但最后,有了这样一个基本的代码库,这有点矫枉过正......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-15
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 2019-04-09
      • 1970-01-01
      相关资源
      最近更新 更多