保龄球游戏程序 - 断言错误

时间:2016-04-09 20:09:44

标签: java unit-testing junit assertions

我正处于用Java创建保龄球计划的初期阶段。我目前有一个名为BowlingGameTest的JUnit测试文件和一个名为Game的Java类......这些都属于我的Java项目BowlingGame。我在BowlingGameTest文件中有以下代码:

import junit.framework.TestCase;

public class BowlingGameTest extends TestCase {
    private Game g;

    protected void setUp() throws Exception {
        g = new Game();
    }

    private void rollMany (int n, int pins) {
        for (int i = 0; i < n; i++) {
            g.roll(pins);
        }
    }

    public void testGutterGame() throws Exception {
        rollMany(20,0);
        assertEquals(0, g.score());
    }

    public void testAllOnes() throws Exception {
        rollMany(20,1);
        assertEquals(20, g.score());
    }

    public void testOneSpare() throws Exception {
        rollSpare();
        g.roll(3);
        rollMany(17,0);
        assertEquals(16,g.score());
    }

    public void testOneStrike() throws Exception {
        g.roll(10); //strike
        g.roll(3);
        g.roll(4);
        rollMany(16,0);
        assertEquals(24, g.score());
    }

    private void rollSpare() {
        g.roll(5);
        g.roll(5);
    }
}

以及我的Java类中的以下代码:Game:

public class Game {
    private int rolls[] = new int[21];
    private int currentRoll = 0;

    public void roll(int pins) {
        rolls[currentRoll++] = pins;
    }

    public int score() {
        int score = 0;
        int frameIndex = 0;
        for (int frame = 0; frame < 10; frame++) {
            if (rolls[frameIndex] == 10) //strike
            {
                score += 10 +
                        rolls[frameIndex + 1] +
                        rolls[frameIndex + 2];
                frameIndex++;
            }
            else if (isSpare(frameIndex))
            {
                score += 10 + rolls[frameIndex + 2];
                frameIndex += 2;
            }   else {
                score += rolls[frameIndex] +
                         rolls[frameIndex+1];
                frameIndex += 2;
            }
        }
        return score;
    }

    private boolean isSpare(int frameIndex) {
        return rolls[frameIndex] +
            rolls[frameIndex + 1] == 10;
    }
}

我在测试程序时遇到2个错误: enter image description here

我该如何解决这个问题?我知道我可以简单地更改assertEquals代码中的数字,但我想要那些数字,16和24。

0 个答案:

没有答案