2012-07-13 52 views
0

我必須測試,我的類的方法返回一個值不同於zero.my問題是,我不知道我必須使用的斷言。只有assertEquals但不是assertNotEquals.how我可不可以做?其中斷言與使用junit

+4

http://stackoverflow.com/questions/1096650/why-doesnt-junit-provide-assertnotequals-methods – 2012-07-13 08:34:08

+0

我使用JUnit 4.10,當我嘗試assertThat用它告訴我,是與否都沒有發現了。我輸入了org.harmcrest.where是錯誤的? – Mazzy 2012-07-13 08:48:53

+0

@Mazzy - FYI,你應該1)剪切/粘貼確切的錯誤信息,2)發佈你的代碼,3)指定你的JUnit版本。這有助於*給你一個準確的答案。恕我直言... – paulsm4 2012-07-13 19:41:32

回答

0

使用

Assert.assertTrue(actualValue!=0); 

但是這不會給你的信息的消息在出現故障時

+0

這是我與JUnit的第一投訴。爲什麼沒有assertNotEquals? – Thilo 2012-07-13 08:36:35

+1

因爲在等值測試中您聲明測試值應該匹配的單個期望值。使用notEquals測試,沒有測試值可以採用的單個值,因此無法報告「預期測試值爲x,但得到y」。所以你不妨使用assertTrue,因爲不需要爲測試方法提供期望的值。 – Bobulous 2012-07-14 11:57:55

2

用途:

assertTrue(currentValue!=0); 

也可以切換到TestNG和有「 assertNotEquals「方法。

+0

或'assertFalse(currentValue == 0)'。 – ShiDoiSi 2012-07-13 11:55:18

0

我想你使用JUnit3(或更高版本),並且你想測試int i != 0。您應該使用:

import junit.framework.TestCase; 
public class Tests extends TestCase { 
    public void testMe(){ 
     int i = 4; 
     assertNotSame("msg on fail", i, 0); 
    } 
} 

使用assertNotSame進行測試不相等。 使用assertNotNullo != null

+1

請勿使用assertNotSame來測試原始值。在JUnit中,assertSame和assertNotSame測試用於測試兩個對象引用(變量)是否指向內存中完全相同的對象。如果將它與原始值一起使用,Java會將原始值自動裝入新的Number對象(如Integer和Long),並且它們可能會不同,因此即使數字值相同,assertNotSame也會始終成功。 – Bobulous 2012-07-14 11:55:15

+0

當我運行下面的測試時,它失敗了,所以我認爲你的最後一點不可能一直是正確的。但我看到有時可能會有問題。 'public void testMe(){int_i = 4; assertNotSame(「msg on fail」,i,4); }' – Simulant 2012-07-14 21:21:15

0

Hamcrest是你的朋友在這裏。使用

assertThat(currentValue, not(equalTo(0))) 

這是可讀的,並在失敗的情況下產生體面的消息。