java有没有一种方法可以在Mockito中同时通过引用和相等进行匹配?
Mockito的Matchers
有eq()
使用equals
和same()
使用==
运算符
在比较Mockito
中的对象时,是否有方法同时使用这两种方法
假设我们有
List list1 = new ArrayList();
List list2 = new ArrayList();
System.out.println(list1.equals(list2)); //true
System.out.println(list1 == list2); //false
/* and I want to check that the references are the same,
and the list contents haven't changed */
因此,如果有一个同时通过==
和.equals()
进行检查的操作符,那就太好了
如果您想检查返回的列表是否相同,并且列表内容是否相同,而不需要做两个断言,那么这将非常有用
此外,这可能是4卡问题的一个经典示例https://en.wikipedia.org/wiki/Wason_selection_task
.equals()
可以为true,即使对象没有相同的引用
所以.equals()
为true并不意味着==
将返回true,并且不是替代
# 1 楼答案
equals
实现应该执行==
检查。如果没有,我会认为这是一个错误。因此,这两种做法都没有必要。例如,如果让eclipse生成equals
,那么第一个测试是==
检查这同样适用于列表,这是
AbstractList
的equals
:# 2 楼答案
我在没有任何配置的情况下成功了。代码如下:
测试通过,输出为: