Junit:尽管两个字符串相等,Assert.assertNotSame 返回 true

问题描述 投票:0回答:1

我正在使用 JUnit 4.12 和 PowerMock 1.6.2。 我有以下代码:

import org.junit.Assert;
...
System.out.println("equals?" + obj.equals(myObj.getUser().getUserName()));
Assert.assertNotSame(obj.getUserName(), myObj.getUser().getUserName());

系统输出调用打印

equals? true
,但是以下断言行成功,如果字符串相等,我预计它会失败。 为什么
assertNotSame
不起作用,我应该使用什么正确的方法?

java junit assertions
1个回答
3
投票

assertNotSame(a, b)
检查
a != b
,即 a 和 b 不是对完全相同对象的引用。这与测试
a.equals(b)
为 false 非常不同,后者检查两个字符串是否具有相同的字符。

你应该使用

assertFalse(obj.getUserName().equals(myObj.getUser().getUserName()))

我建议使用AssertJ,它有数十个更具表现力的断言:

assertThat(myObj.getUser().getUserName()).isNotEqualTo(obj.getUserName());
© www.soinside.com 2019 - 2024. All rights reserved.