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)

また、2 つのオブジェクトを比較しました。

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

assertEqualsequals参照型のメモリ位置を参照する which を呼び出します。Equals(および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 に答える