Groovyの==
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
で判定しているとな。
参考