是否可以强行
assertEquals("10,00 €", new Currency(bon.getTotal()))
使用Currency对象的toString()方法? (我不想自己打电话。)
否则,它会比较参考文献,当然这些参考文献不匹配。
java.lang.AssertionError:
预期:java.lang.String< 10,00€>
但是:jam.cashregister.Currency< 10,00€>
更新
我最终得到了这段代码:
assertEquals(new Currency(bon.getTotal()), "10,00 €");
我不知道交换预期的是否是个好主意 在断言中的实际部分。
public class Currency() {
@Override
public boolean equals(Object other) {
return this.toString().equals(other.toString());
}
}
答案 0 :(得分:3)
您应该比较Currency
的两个实例:
assertEquals(new Currency("10,00 €"), new Currency(bon.getTotal()))
因此,重新定义equals()
是强制性的。如果相等必须基于Currency
的字符串表示,那么它也必须覆盖toString()
(您可能已经这样做了)。
public class Currency {
...
@Override
public String toString() {
//overriden in a custom way
}
@Override
public boolean equals(Object other) {
if(other instanceof Currency) {
Currency that = (Currency) other;
return this.toString().equals(that.toString());
}
return false;
}
...
}
答案 1 :(得分:1)
不,这样做的唯一方法就是自己写一下:
assertEquals("10,00 €", new Currency(bon.getTotal()).toString());