2012-01-29 104 views
1

我已经创建的断言线如下断言在Java

String title = "A"; 
int year = 2009; 
String director = "Zebra";  

VideoObj一个=新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"))); 

不会失败? 可以解释为什么第一个断言声明失败,而不是第二个?

+1

什么'了'? – SLaks 2012-01-29 19:53:11

+1

请出示一个简短但完整的程序来展示您的问题。特别是,这是一种奇怪的平等方法。 – 2012-01-29 19:53:15

+0

你的'equals'方法是非常错误的。 – SLaks 2012-01-29 19:53:23

回答

2

你可能想用的&&而不是||在:

return ((_title.equals(that.title())) || (_director.equals(that.director())) || (_year == that.year())); 

否则你检查任何片名,导演或一年都是一样的,而不是所有的人都是。

+0

是的,正确的应该是&& – anisha 2012-01-29 19:56:53

1

难道不应该宁可 ((_title.equals(that.title()))& &(_director.equals(that.director()))& &(_year == that.year()) )

两个视频都是平等的,如果标题和年份以及导演是平等的,不能当其中只有1 ...