[英]object java AssertEquals Same not returning true when compareTo shows they're equal
這顯示了具有引用https://stackoverflow.com/posts/comments/65623190?noredirect=1的屬性的類
產品類
@Override
public int compareTo(Goods o) {
int compared = 0;
System.out.println("Date " + o.getDate() + " " + this.getDate());
if(o.getDate() != this.getDate()) {
compared = 1;
}
System.out.println("Price " + o.getPrice() + " " + this.getPrice());
if(Double.compare(o.getPrice(), this.getPrice()) != 0) {
compared = 1;
}
System.out.println("Status " + o.getStatus() + " " + this.getStatus());
if(o.getStatus() != this.getStatus()) {
compared = 1;
}
System.out.println("Name " + o.getProductName() + " " + this.getProductName());
if(o.getProductName() != this.getProductName()) {
compared = 1;
}
if(o.getDate().equals(this.getDate()) &&
o.getStatus().equals(this.getStatus()) &&
o.getProductName().equals(this.getProductName()) &&
o.getPrice().equals(this.getPrice())) {
compared = 0;
}
return compared;
}
JunitTest.class
@Test
public Test {
Product product = new Product();
product.setProductName("Product_A");
product.setPrice(4.10);
product.setStatus(Library.STATUSES.THEM);
calendar.set(Calendar.MONTH, Calendar.AUGUST);
date = calendar.getTime();
product.setDate(date);
actualGoods.add(product);
product = new Product();
product.setProductName("Product_A");
product.setPrice(3.70);
product.setDate(date);
product.setStatus(Library.STATUSES.HIM);
expectedGoods.add(product);
assertSame(expectedGoods, classLib.ProductUpdate(actualGoods, Library.STATUSES.HIM));
}
然后,我有了替換廉價產品的方法,並在Library類中將其狀態更改為“ HIM”狀態
public List<Product> redLinePromotionListStatusUpdate(List<Product> actualProduct, STATUSES status) {
List<Product> currentProducts = new ArrayList<>();
List<Product> originalStatusProducts = new ArrayList<>();
int listIndex = 0;
if(actualProduct != null) {
for (Product product : actualProduct) {
if (product.getStatus().toString().equals(STATUSES.THEM.toString())) {
originalStatusProducts.add(listIndex, product);
listIndex++;
}
if (product.getStatus().equals(STATUSES.valueOf(status.toString())) && containsName(originalStatusProducts, product.getProductName())) {
if ((callReductionPrice(product.getPrice(), originalStatusProducts.get(originalStatusProducts.size() - 1).getPrice())) < originalStatusProducts.get(originalStatusProducts.size() - 1).getPrice()) {
currentProducts.add(product);
}
}
}
}
return currentProducts;
}
我如何得知我的兩個對象不相等。 當我使用類方法compareTo時,我知道它們是正確的,因此它在我的類庫方法中失去了對等性。
編輯
java.lang.AssertionError:預期:<[Goods @ 45322aea]>,但為:<[Goods @ 149fac29]> java.lang.AssertionError:預期相同:<[Goods @ 34c636a7]>不是:<[Goods @ 59797c7] >
當我嘗試使用assertTrue(object.equals(testObject))時,我得到java.lang.AssertionError EDIT調試預期的星期日8月21日16:19:10 EDT 2016價格3.7狀態HIM名稱Product_A實際的Product_A HIM 3.7 Sun 8月21日16:19:10美國東部夏令時間2016
預期對象的Product_A REDLINE30 3.7為空實際對象的Product_A REDLINE30 3.7為空
但是我仍然得到AssertionError。 您知道我如何從斷言失敗中獲取對象的更多信息嗎?
Assert.assertSame
文檔說:
Asserts that two objects refer to the same object.
兩個對象可以相等( object1.equals(obejct2)
),而不必是相同的引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.