我是使用 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;
}
}
最佳答案
assertEquals
将调用 equals
来引用引用类型的内存位置。如果您可以重写 DateAD
的 Equals
(和 getHashCode
)方法,您应该这样做。
否则,对组成日期(或以毫秒/纳秒为单位的时间)的小时、分钟、天等执行等于检查。
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);
}
关于java - JUnit assertEquals() 失败,即使它们看起来相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919782/