以下是我需要测试的员工超类的代码。
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]>
答案 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());