我创建了一个断言行,如下
String title = "A";
int year = 2009;
String director = "Zebra";
VideoObj a = new VideoObj(标题、年份、导演);
Assert.assertFalse(a.equals(new VideoObj(title+"1", year,director)));
为什么会失败? 等价方法如下。
public boolean equals(Object thatObject) {
if (!(thatObject instanceof VideoObj))
return false;
VideoObj that = (VideoObj) thatObject;
return ((_title.equals(that.title())) && (_director.equals(that.director())) && (_year == that.year()));
}
但是下面的声明
Assert.assertFalse(a.equals(new VideoObj(title, year, director + "1")));
不会失败吗? 有人可以解释为什么第一个断言语句失败而不是第二个吗?
最佳答案
您可能想在以下位置使用 &&
而不是 ||
:
return ((_title.equals(that.title())) || (_director.equals(that.director())) || (_year == that.year()));
否则,您将检查任何头衔、导演或年份是否相同,而不是全部相同。
关于java - java中的断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056205/