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 is <...sa week pay of 42[.0]>

4

3 回答 3

2

这会起作用:

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

你有每周支付作为double你的超级类。所以它打印 42.0 ,而不是 42。

另一种方式:

添加另一个构造函数:

 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 回答
2

因为您的weeklyPay 是双精度的,所以 toString 方法将其打印为 42.0 并且因为您将其与字符串进行比较,所以它不会评估字符串中的 42。

尝试这个:

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

从课程的编写方式来看,我希望这会通过。

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