我有相當複雜的對象結構(帶有一堆原始字段和對象引用),並且想要測試除-a部分之外的所有字段。舉個例子;Hamcrest - 優雅的方式來測試具有相同propertyity值的複雜對象
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"))
由於我不想手動檢查所有字段,我相信必須有一種方法來優雅地編寫測試。有任何想法嗎?
乾杯。
所以,你有兩個袋* *的對象,想進行深度比較呢? – Raffaele
不確定要叫他們包對象,有許多原始字段和其他對象引用。我想跳過的字段是屬於ComplexObject的原始字段。我們可以說這將是一個深刻的比較。 – tugcem
你是否只想''samePropertyValuesExceptAs'的Matcher實現作爲這個問題的答案?如果是這樣的話,你可以創建'org.hamcrest.beans.SamePropertyValuesAs'的副本,並添加另一個構造函數/靜態工廠方法,該方法將刪除被排除的屬性進行測試。 –
SpaceTrucker