繁体   English   中英

测试toString时,为什么需要调用toString?

[英]When testing toString, why is calling toString required?

我已经覆盖了我班上的toString方法。 测试toString方法时,我一直想知道为什么需要调用toString。

让我详细说明-

类People中的toString:

@Override
public String toString() {
    return ("This Object is called " + this.name + ". For a list of weekdays: " + this.dates);
}

工作测试用例:

    @Test
    Human Tom = new Human("Tom"); // constructor creates an ArrayList<weekDay> named dates
    weekDay someDay = new weekDay("Thursday");
    Tom.addDate(someDay);  // adds someDay to the ArrayList
    String result = ("This Object is called " + this.name + ". For a list of weekdays: " + Tom.dates);
    assertEquals(Tom.toString(), result);

assertEquals(Tom.toString(), result)将正常工作。 但是,当我尝试使用assertEquals(Tom, result) eclipse将写类似“ expected x ”但为“ y ”的东西。 然而,“ y ”具有与“ x ”完全相同的内容。 为什么需要显式调用toString()

assertEquals(Tom.toString(), result);

这等效于编写:

Tom.toString().equals(result);

比较两个String值。 当您尝试执行此操作时:

assertEquals(Tom, result);

这等效于:

Tom.equals(result);

现在正在调用People类(如果定义了)上的.equals()方法,如果没有,则调用Object#equals。

在您的测试未能向您提供错误的详细信息之后,Eclipse将打印出toString()方法,这在这种情况下令人困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM