0

我是使用 JUnit 的新手,所以很可能我遗漏了一些完全基本的东西,但是以下是我收到的输出:

Testcase: testDateFromDayOfYear(p3.DateADTest): FAILED
expected: p3.DateAD<Saturday, 1 January, 2000> but was: p3.DateAD<Saturday, 1 January, 2000>
junit.framework.AssertionFailedError: expected: p3.DateAD<Saturday, 1 January, 2000> but was: p3.DateAD<Saturday, 1 January, 2000>
    at p3.DateADTest.testDateFromDayOfYear(DateADTest.java:85)

我还比较了这两个对象:

System.out.println("*******************************************");
System.out.println(result.getClass());
System.out.println(expResult.getClass());
System.out.println("*******************************************");

*******************************************
class p3.DateAD
class p3.DateAD
*******************************************

有人可以提供一些建议吗?

测试方法的完整代码:

@Test
public void testDateFromDayOfYear() {
    System.out.println("dateFromDayOfYear");
    short dayOfYear = (short)1;
    short year = (short)2000;
    DateAD instance = new DateAD();
    DateAD expResult = new DateAD(dayOfYear, (short)1, year);
    DateAD result = instance.dateFromDayOfYear(dayOfYear, year);
    System.out.println("*******************************************");
    System.out.println(result.getClass());
    System.out.println(expResult.getClass());
    System.out.println("*******************************************");
    assertEquals(expResult, result);
}

等于方法:

public boolean equals(Object inputDate) {
    if (this.year == inputDate.year && 
            this.dayOfYear == inputDate.dayOfYear) {
        return true;
    }
    else {
        return false;
    }
} 
4

1 回答 1

1

assertEquals将调用equalswhich 引用引用类型的内存位置。如果您可以覆盖Equals(and getHashCode) 方法,DateAD您应该这样做。

否则,对组成日期(或以毫秒/纳秒为单位的时间)的小时、分钟、天等执行相等检查。

public boolean equals(Object o){
 if(o == null) { return false; }
 if(!(o instanceOf DateAD)) { return false; }
 DateAD date = (DateAD) o;

 return (this.year == date.year && this.dayOfYear == inputDate.dayOfYear);
}
于 2013-11-12T02:29:13.910 回答