2017-09-26 247 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

相关问题