JUnit测试问题?

时间:2012-12-04 02:59:49

标签: java junit4

以下是我需要测试的员工超类的代码。

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:expect< ... s每周支付42 []>但是< ... s每周支付42 [.0]>

3 个答案:

答案 0 :(得分:2)

因为你将weeklyPay作为double,所以toString方法将它打印为42.0,因为你将它与字符串进行比较,所以它不会评估字符串中的42。

试试这个:

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

答案 1 :(得分: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);
    }

答案 2 :(得分:0)

从编写类的方式来看,我希望这可以通过。

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