assertEquals (Java) 有问题

Trouble with assertEquals (Java)

我正在尝试制作 "Rock, papers, scissors" 的游戏。我有这样的测试:

@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 class 方法是used,只是做参考比较。

您必须执行以下操作:

/**
 *  Terrible `equals()` method implementation. Just for demonstration purpose.
 */
@Override
public boolean equals(Object obj) {
    return obj instanceof Rock;
}