繁体   English   中英

assertEquals(Java)遇到问题

[英]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.

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