ここに私の問題があります:「私のクラス」の equals メソッドをオーバーライドしようとすると、単に機能しません。呼び出された関数は最も抽象的な関数であり、「私のクラス」の equals メソッドではありません! これが私のプログラムのコードです。これは「私のクラス」のequalsコードです。
@Override
public boolean equals(Object o){
StudentProxy s = (StudentProxy)o;
return Matricola == s.Matricola && Name == s.Name && Surname == s.Surname;
}
そして、ここに私のアサーションが失敗する場所があります:
@Test
public void storeStudentTest() throws Exception{
StudenteProxy s = new StudenteProxy(100, "Gianni", "Rosso", 27.2, 132);
DB.storeStudent(s);
StudentProxy ret = (StudentProxy)DB.retrieveStudentData(s.getMatricola());
DB.deleteStudent(s);
assertEquals(ret, s); // HERE ! ! !
}
assertTrue も試しました:
assertTrue(ret.equals(s));
しかし、AssertionError が発生します。これは、最も抽象度の高い equals が呼び出されていることが原因だと思います。2 つのオブジェクトが同じオブジェクトではないため、AssertionError というメッセージが表示されます。
何か案は???:(
PS: それらは equals である必要があります。さまざまな方法でこれを何度もチェックしたので、それは問題ではありません。このコードを何度もテストしたところ、equals がオーバーライドされないことが問題であることがわかりました ;)