2012-09-27 32 views
0

我目前正在爲我的程序編寫junit測試。JUnit - assertFalse不會除==運算符?

我的一個測試更新了現有產品。 Here`s代碼:

@Test 
public void testUpdate(){ 
    Produkt p = new Produkt(1, "apple", "food", true, 2.00, false, true); 
    assertFalse(handler.updateProdukt(p)==0);; 
} 

但eclispe打總是說:

的==操作符是未定義的參數類型無效,詮釋

如果我寫空沒有什麼變化......

有測試updatedProdukt是否爲空或不是一個可能性?

我真的appreaciate你的答案!

回答

3

你的方法是void。它不返回任何內容,因此返回值不能用於賦值或表達式中。

無關使用JUnit或者Eclipse。

也許你想是這樣的:

handler.updateProdukt(p); 
assertEquals("has been updated", theNewExpectedValue, p.getSomeValue()); 
0

這是因爲你的updateProdukt方法返回void。改變它返回一些東西,例如booleanint,那麼你可以在assert中使用它。

的問題是:什麼是updateProdukt做什麼你想測試?如果它正在更新指定的產品,那麼您應該返回一個boolean(true或false)以指示指定產品是否已成功更新。或者,返回已更新的Product,如果沒有更新產品,則返回null。

+0

因此無法測試updateProdukt是否爲null? – maximus

1

它不是像

handler.updateProdukt(p) 

更不返回任何值,則需要將簽名改爲

int handler.updateProdukt(p) 
+0

但是呢?如何用單元測試測試無效方法? – maximus

+2

@maximus您正在測試該方法是否返回0,但您已聲明方法返回void。你能指望什麼? – assylias

0

你的updateProdukt()返回什麼?是不是回報無效?

您需要返回從updateProdukt東西(),以能夠使用==操作符。

+0

那麼是否有不同的方法通過單元測試來測試void方法? – maximus

+0

要測試更新是否實際更新了某些東西(通過檢查產品) – Thilo

+1

除非您定義要測試的內容,否則很難說。如果你正在驗證產品更新是否成功,那麼返回一個布爾值來表明它成功了,所以你可以簡單地執行'assertTrue(handler)。updateProdukt(P))' –

0

如果返回int或Strings或Long值,請嘗試以下代碼。

assertFalse(handler.updateProdukt(p).equals(0));