Mam dość złożoną strukturę obiektu (z paczką prymitywnych pól i odniesień do obiektów) i chcę przetestować wszystkie pola z wyjątkiem-kilka z nich. Jako przykład;Hamcrest - Elegancki sposób testowania złożonego obiektu z samepropertyvaluesas
ComplexObject actual = generateMagically("someInput");
ComplexObject expected = ActualFunction.instance.workMagically(actual);
// we want to be sure that workMagically() would create a new ComplexObject
// with some fields are different than "actual" object.
// assertThat(actual, samePropertyValuesAs(expected)); would check all fields.
// what I want is actually; - notice that "fieldName1" and "fieldName2" are
// primitives belong to ComplexObject
assertThat(actual, samePropertyValuesExceptAs(expected, "fieldName1", "fieldName2"))
Ponieważ nie chcę ręcznie sprawdzać wszystkich pól, uważam, że musi istnieć sposób na eleganckie napisanie tego testu. Jakieś pomysły?
Pozdrawiam.
Więc masz dwie torby * * obiektów i chcą wykonywać głębokie porównania? – Raffaele
Nie można nazywać ich obiektami torby, ma wiele prymitywnych pól i inne odwołania do obiektów. Pola, które chcę pominąć, są prymitywne należą do ComplexObject. Możemy powiedzieć, że będzie to głębokie porównanie. – tugcem
Po prostu chcesz, aby implementacja Matchera dla 'samePropertyValuesExceptAs' była odpowiedzią na to pytanie? Jeśli tak, to możesz po prostu utworzyć kopię 'org.hamcrest.beans.SamePropertyValuesAs' i dodać do niej inną metodę konstruktora/statycznej fabryki, która usunie wykluczone właściwości z testowania. –
SpaceTrucker