0

GradeBook クラスの私のプログラムでは、toString メソッドを GradeBook クラスに追加して、スペースで区切られたスコアの各スコアを含む文字列を返すことになっていました。

これは私が行ったことであり、JUnit テストを作成するときは、toString メソッドを使用して、スコア配列にある内容とスコア配列にあると予想される内容を比較し、JUnit テストをコンパイルして実行する必要があります。 addScore テストは true でなければなりません。

使用するメソッドは 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 が正しい形式であることは確かですが、誰かが私のプログラムに光を当てることができれば幸いです

GradeBook コードは次のとおりです。

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

2 に答える 2

0

これを見つけた...よくある間違い...

g1.toString.equals(...)

する必要があります

g1.toString().equals(....)

toString の後に括弧が追加されていることに注意してください。toString はメソッドであり、呼び出す必要があります。

于 2013-10-25T14:26:12.697 に答える