0

これは、テストする必要がある従業員スーパークラスのコードです。

public abstract class Employee {
    protected int id; 
    protected double weeklyPay;

public Employee(int id)
    {
        this.id=id;
    }

public void setId(int id)
    {
        this.id=id;
    }
public int getId() 
    {
        return id;
    }
public String toString() 
    {
        return id+"has a weekly pay of "+weeklyPay;
    }
public double getWeeklyPay() 
    {
        return weeklyPay;
    }

これが ManagerClass のコードです

public class Manager extends Employee

public Manager(int id, double weeklyPay) 
    {
        super(id);
        super.weeklyPay=weeklyPay;
    }

public String toString() 
    {
        return "Manager " + super.toString();
    }

これは、マネージャーの JUnit Test で機能しない部分です。

public void testToString() {
        assertEquals("Manager 1has a weekly pay of 42", new Manager(1, 42).toString());

これは、org.junit.ComparisonFailure: expected <...sa week pay of 42[]> but was <...sa week pay of 42[.0]> という失敗メッセージです。

4

3 に答える 3

2

WeeklyPay が double であるため、toString メソッドはそれを 42.0 として出力し、文字列と比較しているため、文字列内の 42 を評価していません。

これを試して:

assertEquals("Manager 1has weekly pay of 42.0", new Manager(1, 42).toString());
于 2012-12-04T03:21:18.557 に答える
2

これはうまくいきます:

assertEquals("Manager 1has a weekly pay of 42.0", new Manager(1, 42).toString());

doubleあなたのスーパークラスのように、weeklyPayがあります。したがって、 42 ではなく 42.0 が出力されます。

別の方法:

別のコンストラクターを追加します。

 public Employee(int id, double wP) {
    this.id = id;
    this.weeklyPay = wP;
    }

次に、マネージャーから:

 public Manager(int id, double weeklyPay) {
    super(id, weeklyPay);
    }

次のプリント :マネージャー 1 の週給は 20.0

 @Test
    public void tt() {
    Manager m = new Manager(1, 20);
    System.out.println(m);
    }
于 2012-12-04T03:48:13.857 に答える
0

クラスが書かれている方法から、これは合格すると思います。

assertEquals("Manager 1has a weekly pay of 42", new Manager(1, 42).toString());
于 2012-12-04T03:02:55.730 に答える