[英]Trouble with assertEquals (Java)
我正在尝试制作“岩石,纸张,剪刀”游戏。 我有这样的测试:
@Test
public void rockBeatsScissors() {
assertEquals(rock, rock.vs(scissors));
}
我认为编写一个函数Equals就足够了,例如:
public class Rock {
Object vs(Scissors s) {
return new Rock();
}
Object vs(Paper p) {
return new Paper();
}
Object vs(Rock r) {
return new Rock();
}
boolean equals(Rock r) {
return true;
}
boolean equals(Paper p) {
return false;
}
boolean equals(Scissors s) {
return false;
}
}
(顺便说一句,我知道我应该添加一个HashCode函数)我运行测试,但只会失败。 我究竟做错了什么?
assertEquals()
使用的equals()
方法是将Object
作为参数的方法。 现在,您还没有覆盖Object#equals()
方法,但是提供了自己的3个equals方法集,该方法甚至都不会使用,因此使用了默认的Object
类方法,该方法只是进行引用比较。
您必须提供以下实现:
/**
* Terrible `equals()` method implementation. Just for demonstration purpose.
*/
@Override
public boolean equals(Object obj) {
return obj instanceof Rock;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.