Java断言错误,但我得到了正确的答案

Java断言错误,但我得到了正确的答案,java,assert,Java,Assert,我在为我的类测试我的一些方法,我得到了以下错误: java.lang.AssertionError: expected: com.company.ArrayList<[ 11 12 ]> but was: com.company.ArrayList<[ 11 12 ]> prg以前在类中声明为private @Test public void testGetOut() throws Exception { List wtf = new ArrayList();

我在为我的类测试我的一些方法,我得到了以下错误:

java.lang.AssertionError: expected: com.company.ArrayList<[ 11 12 ]> but was: com.company.ArrayList<[ 11 12 ]>
prg以前在类中声明为private

@Test
public void testGetOut() throws Exception {
    List wtf = new ArrayList();
    wtf.add(11);
    wtf.add(12);
    assertEquals(wtf, prg.getOut());
}
ArrayList是我自己的ADT,List是接口,ProgState只是:

public class ProgState {
private List out;

public ProgState(List ot) {
    out = ot;
}

public List getOut() {
    return out;
}
只是把我的名单还给你。为什么它不接受ot=[11,12]与wtf=[11,12]相同?我完全不知道。

在Java中,
对象的
.equals()
函数通过
=
强制实现相等。由于您的两个列表不代表相同的
对象
,因此在调用
assertEquals()
期间,此检查失败

ArrayList是我自己的ADT

我冒昧地猜测,您没有在ADT中重写
equals
方法。 默认情况下,它继承自
对象
,所有不同的实例(由
新建
创建)都不相等


您需要重写此方法并实现对元素的比较:大小必须匹配且元素必须成对相等:均为null或均为非null并通过其
equals
方法相等。

“ArrayList是我自己的ADT”然后显示其equals实现。看起来您实现了自己的
com.company.ArrayList
。你能分享它的实现吗?具体来说,您是否覆盖了
equals(Object)
方法?是的。我最终没有凌驾于平等之上,而是改变了整个观点。我制作了另一个数组,添加了与我在第一个数组中添加的相同的整数,并使用了方法。对这两个数组执行两次get(0),然后比较结果,如果得到错误的答案,则更改标志。我在国旗上应用了断言。谢谢你的回答,很抱歉没有回复。
public class ProgState {
private List out;

public ProgState(List ot) {
    out = ot;
}

public List getOut() {
    return out;
}