2017-09-26 86 views
1

我做了一個方法來計算String中給定字符的出現次數。JUnit測試assertEquals()和Assert.assertEquals()之間的區別

public Integer numberOf(String str, Character a){} 

我試圖測試正常使用:

@Test 
public void test1(){ 
    Integer result = oc.numberOf("Lungimirante", 'u'); 
    Assert.assertEquals(1, result); 
} 

但是Eclipse抱怨它。

我用Google搜索,我發現,測試它,我需要使用:的

assertEquals(1, result); //it works correctly 

代替:Assert.assertEquals(1, result);

你能解釋我爲什麼?有什麼不同?

+0

的'斷言[平等相待,等]'方法調用來自的靜態導入'junit.framework.Assert'類(或'org.junit.Assert'等)。可能你有一個'import static junit.framework.Assert。*'或類似的語句,但是你並沒有實際導入'junit.framework.Assert'。 – Mena

+0

@Mena:是使用'assertEquals'我導入:'導入靜態org.junit.Assert.assertEquals;' 和之前使用'Assert.assertEquals'只導入'org.junit.Assert;' – SwampThing

+0

我討厭自動裝箱和這是爲什麼的原因之一。獲得'NullPointerExceptions'你不會期望他們是另一個。正因爲如此,我配置了Eclipse來查看自動裝箱發生的錯誤(和恕我直言,它本身就說有這個選項,我沒有錯我的意見) – Lothar

回答

2

你沒有爲此提供任何細節:

Eclipse的抱怨它。

我懷疑這是一個Ambiguous method call ...

enter image description here

...這是由有被多個「形式」,其中assertEquals一些帶參數,有的長,有的對象造成,一些String等

所以,你只需要明確你想使用哪一個。例如,下面的兩個assertEquals調用編譯,因爲它們是明確有關類型expectedactual說法

Integer result = oc.numberOf("Lungimirante", 'u'); 
Assert.assertEquals(new Integer(1), result); 
Assert.assertEquals(1, result.intValue()); 
+0

:抱怨:_The方法assertEquals(對象,對象)對於類型Assert_ – SwampThing

+0

@SwampThing是不明確的,這就是我所假設的,所以我的答案與你的問題有關。只需調整你的'assertEquals'調用(使用我的答案中提供的示例),以便清楚瞭解'expected'和'actual'參數的類型。 – glytching

+0

它適用於您的建議。 – SwampThing

相關問題