【问题标题】:JUnit Testing assistance re logic needed需要 JUnit 测试辅助重新逻辑
【发布时间】:2017-05-02 13:13:53
【问题描述】:

我正在尝试为以下代码制定一个 JUnit 测试,我希望有人能指出我正确的方向,因为我完全被难住了!

public ArrayList<PathData> tileClicked(Coordinate tile){
    ArrayList<PathData> pathData = new ArrayList<>();
    Tile clickedTile = gameBoard.getTile(tile);
    int totalNumPlayers = clickedTile.getNumberOfPlayers();
    Player cur;
    //GuiInstruction guiInstruction = new GuiInstruction();
    //guiInstruction
    if (clickedTile.hasPort()){
        //deal with ports
        for(int j = 0; j < totalNumPlayers; j++){
            cur = clickedTile.getPlayerIndex(j);
            if(cur.equals(currentPlayer)){
                pathData = specialCalculateMove(currentPlayer, true);
            }
        }
    } else if (clickedTile.hasPlayer()){
        for(int i = 0; i < totalNumPlayers; i++){
            cur = clickedTile.getPlayerIndex(i);
            if(cur.equals(currentPlayer)){ //TODO: Is this if statement stupid? 
                pathData = normalCalculateMove(currentPlayer);
            }
        }
    }else{
        //TODO: Does this actually do anything?
    }
    return pathData;

}

【问题讨论】:

  • 你难倒了什么?你的问题太笼统了。你期望会发生什么?如果传入的磁贴引用为空怎么办?应该发生什么?我看到太多 TODO cmets 表明您甚至不了解您的方法,更不用说测试了。
  • 请明确要求你需要断言什么,你需要测试什么功能等等。这个方法你需要测试吗?

标签: java testing junit


【解决方案1】:

一个相当广泛的问题,因此您只能得到一些广泛的提示(不会为您编写代码!):

  • 您必须了解 A) 方法中的参数是什么 B) 结果是什么。您的方法可以产生的“可观察”效果
  • 从那里:您提供单个 tile 参数;并且根据该对象的实际状态,您的测试方法使用不同的路径

这意味着:您希望为通过您的方法的每个可能路径至少有一个“测试方法”。该测试方法使用参数设计调用被测方法以采用特定路径。您调用被测方法;然后检查返回的结果是否符合您的期望。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多