我正在尝试使用assertEquals(s1,s2)比较两个字符串; 我收到比较错误<>预期null。 帮助我解决这个问题。?
答案 0 :(得分:5)
(你没有说你正在使用什么版本的JUnit,它可能很重要......虽然可能没有。)
这意味着单元测试的表达式的计算结果为null
为expected
的{{1}}参数,而assertEquals
参数的计算结果为actual
1}}。
如果不查看代码,就无法说明这意味着什么,但它可能是单元测试中的错误(例如,错误方式的参数)或者测试代码中的错误......或两者。至于为什么你得到null
,这取决于单元测试和/或它正在测试的代码。您需要通过查看源代码,使用调试器等进行自己的调查。
请注意,null
方法(见下文)使用assertEquals
(而不是equals
)比较对象,并注意避免将NPE抛出,或者两个参数都是{{1} }。因此,建议您首先测试==
的人会忽略这一点。
这是Junit 4.4代码:
null
如您所见,处理null
个案件......
答案 1 :(得分:0)
JUnit调用.equals()方法来确定方法assertEquals(Object o1,Object o2)中的相等性。所以,使用assertEquals(string1,string2)肯定是安全的。 (因为字符串是对象)提供的对象都是非空的。评估它的另一种方法是使用assertTrue:
assertTrue(s1.equals(s2));