java - JUnit assertEquals() 失败,即使它们看起来相等

标签 java netbeans junit

我是使用 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 来引用引用类型的内存位置。如果您可以重写 DateADEquals(和 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/

相关文章:

java - 从音频文件计算 FFT

java - 通过 Flink REST API 在 AWS EMR 上运行 Flink 作业

java - 如何在 Gsoap 客户端中使用带有对称 key 的用户名身份验证来使用 Java Metro Web 服务?

java - GlassFish 上的 EJB + WebService 以及支持 HTTPS 的 Netbeans

java - 从不同类中的文本字段 JFrame 表单获取信息

java - 如何在java中测试本地内部类方法?

maven - 倾城报告 : no data generated for JUnit framework

java - Gradle 源集 : classesDir has been deprecated

C++ NetBeans : How to link my . o 文件到我的项目?

java - 测试 Spring Boot REST API