首先,我是Java新手,所以希望這不是非常簡單的事情,但我正在嘗試做一些單元測試,並且我沒有在Eclipse中獲得舊的綠燈。對我的問題:Objects.equals for jUnit測試
所以,我有兩個對象,都是類分數和我只是試圖確保我的方法(multiplyThem)是......呃......正常運作。
代碼(編輯來展示一下我現在有):
private Fraction newFraction, otherFraction, thirdFraction;
@Before
public void setUp(){
newFraction = new Fraction(2, 3);
otherFraction = new Fraction(1, 5);
thirdFraction = new Fraction(2, 15);
}
@Test
public void testMultiplyEm() {
System.out.println(newFraction.multiplyEm(otherFraction));
System.out.println(thirdFraction);
assertEquals("Fractions don't equal", newFraction.multiplyEm(otherFraction), thirdFraction);
}
在該方法中multiplyEm
,返回類型是一小部分,它調用另一個函數調用簡化之前乘以2個分子和分母2。然後它返回簡化的分數。
我使用了兩個單獨的System.out.println
,並得到了完全相同的東西印在屏幕上。我知道這並不總是意味着他們是相同的,但也許Objects.equals
不是我應該在這裏使用。這些對象只是兩個整數:Fraction x = new Fraction(int y, int z)
。
我不知道爲什麼測試失敗。有人有主意嗎?將不勝感激的方式來正確編寫一個單元測試!
Fraction類方法multiplyEm:
public Fraction multiplyEm(Fraction otherFraction){
int newNumerator = this.numerator * otherFraction.numerator;
int newDenominator = this.denominator * otherFraction.denominator;
Fraction newFraction = new Fraction(newNumerator, newDenominator);
return newFraction;
}
打印的內容是無關緊要的。 Objects.equals()使用fraction.equals(fraction2)。所以如果你沒有重寫equals(Object),那麼一個分數只等於它自己。 –
你是否爲Fraction類實現了equals和hashCode方法? Assert.assertEquals和Objects.assertEquals都委託給Fraction.equals來檢查相等性 –
我認爲你問我是否在Fraction類(或.hashCode)中的任何位置使用了Fraction.equals?如果這就是你要求的,不,我沒有。我想我也應該從課堂上發佈我的代碼。也許這就是我真正在搞的東西 – drawnitsud