Groovyの==は、Comparableを実装している場合はcompareToを使って検証するらしい。
Comparableを実装していない場合
@AllArgsConstructor
public class Zombie {
private final int no;
private final String name;
}
class ZombieTest extends Specification {
def "test"() {
setup:
def sakura = new Zombie(1, "sakura")
def saki = new Zombie(1, "saki") // 本当は2号
expect:
(sakura == saki) == false
sakura.equals(saki) == false
}
}
Comparableを実装している場合
@AllArgsConstructor
public class Zombie implements Comparable<Zombie> {
private final int no;
private final String name;
@Override
public int compareTo(Zombie o) {
return no - o.no;
}
}
class ZombieTest extends Specification {
def "test"() {
setup:
def sakura = new Zombie(1, "sakura")
def saki = new Zombie(1, "saki") // 本当は2号
expect:
(sakura == saki) == true
sakura.equals(saki) == false
}
}
sakura == sakiはsakura.compareTo(saki) == 0で判定しているとな。
参考