在我的 GradeBook 类程序中,我应该向 GradeBook 类添加一个 toString 方法,该方法返回一个字符串,其中每个分数的分数由空格分隔。
我已经这样做了,当我创建 JUnit 测试时,我应该使用 toString 方法来比较分数数组中的内容与分数数组中的预期内容,以及当我编译和运行 JUnit 测试时addScore 测试应该是真的。
我们要使用的方法是 assertTrue() 方法。前任 我们的老师给我们的是它应该是这样的形式:
assertTrue(g1.toString.equals("50.0 75.0"); the 50 and 75 are scores taken from the objects of GradeBook made in the JUnit Test Class in the setUp() method but mine will be Totally different.
现在,当我编译并运行程序时,JUnit 测试说 assertTrue() 代码中有错误,但我不明白为什么。我也很肯定我的 toString 格式正确,但如果有人能阐明我的程序,我将不胜感激
成绩册代码是:
import java.util.ArrayList;
import java.util.Arrays;
public class GradeBook
{
private double[] scores;
private int scoresSize;
/**
Constructs a gradebook with no scores and a given capacity.
@capacity the maximum number of scores in this gradebook
*/
public GradeBook(int capacity)
{
scores = new double[capacity];
scoresSize = 0;
}
/**
Adds a score to this gradebook.
@param score the score to add
@return true if the score was added, false if the gradebook is full
*/
public boolean addScore(double score)
{
if (scoresSize < scores.length)
{
scores[scoresSize] = score;
scoresSize++;
return true;
}
else
return false;
}
/**
Computes the sum of the scores in this gradebook.
@return the sum of the scores
*/
public double sum()
{
double total = 0;
for (int i = 0; i < scoresSize; i++)
{
total = total + scores[i];
}
return total;
}
/**
Gets the minimum score in this gradebook.
@return the minimum score, or 0 if there are no scores.
*/
public double minimum()
{
if (scoresSize == 0) return 0;
double smallest = scores[0];
for (int i = 1; i < scoresSize; i++)
{
if (scores[i] < smallest)
{
smallest = scores[i];
}
}
return smallest;
}
/**
Gets the final score for this gradebook.
@return the sum of the scores, with the lowest score dropped if
there are at least two scores, or 0 if there are no scores.
*/
public double finalScore()
{
if (scoresSize == 0)
return 0;
else if (scoresSize == 1)
return scores[0];
else
return sum() - minimum();
}
public int getScoresSize() {
return scoresSize;
}
public String toString(String scoreList){
for(int i = 0; i < scores.length; i++){
scoreList += scores[i] + "";
}
return scoreList;
}
}
这是 JUnit 测试类:
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class GradeBookTest {
private GradeBook g1;
private GradeBook g2;
@Before
public void setUp() throws Exception {
g1 = new GradeBook(5);
g2 = new GradeBook(5);
g1.addScore(45);
g1.addScore(68);
g1.addScore(35);
g1.addScore(22);
g2.addScore(99);
g2.addScore(10);
g2.addScore(77);
g2.addScore(43);
}
@After
public void tearDown() throws Exception {
g1 = null;
g2 = null;
}
@Test
public void testAddScore() {
assertTrue(g1.toString().equals("45.0 68.0 35.0 22.0"));
assertTrue(g2.toString().equals("99.0 10.0 77.0 43.0"));
assertEquals(45,g1.getScoresSize(),.001);
assertEquals(68,g1.getScoresSize(),.001);
assertEquals(35,g1.getScoresSize(),.001);
assertEquals(22,g1.getScoresSize(),.001);
assertEquals(99,g2.getScoresSize(),.001);
assertEquals(10,g2.getScoresSize(),.001);
assertEquals(77,g2.getScoresSize(),.001);
assertEquals(43,g2.getScoresSize(),.001);
}