Zwracam uwagę na zmiany w samej klasie Customer - metody hashCode() oraz equals(Object) oraz sam test z assertNotSame() i assertSame().
Ufam, że teraz wszyscy są usatysfakcjonowani, nieprawdaż?
package pl.japila.java7; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import java.util.Objects; import org.junit.Test; public class ObjectsTest { class Customer { public final String code; public final String name; public Customer(final String name, final String code) { this.name = name; this.code = code; } @Override public int hashCode() { return Objects.hash(name, code); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Customer other = (Customer) obj; if (!getOuterType().equals(other.getOuterType())) return false; return Objects.equals(name, other.name) && Objects.equals(code, other.code); } private ObjectsTest getOuterType() { return ObjectsTest.this; } } @Test public void testObjectsMethods() { Customer jacek = new Customer("Jacek", "X23"); Customer klonJacka = new Customer("Jacek", "X23"); assertTrue("Klon Jacka jest Jackiem", Objects.equals(jacek, klonJacka)); assertNotSame("Jacek nierówny swojemu klonowi", jacek, klonJacka); Customer wskazanieNaJacka = jacek; assertTrue(Objects.equals(jacek, wskazanieNaJacka)); assertSame(jacek, wskazanieNaJacka); } }
Brak komentarzy:
Prześlij komentarz