11

現在、コードのレビューを行っているところ、テストケースを中断する次のコード行を見つけました。

assertEquals(Long.valueOf(4321), lMessage.getNumber());

getNumberIntegerも を返します4321。私はこれを次のように変更しました:

assertTrue(4321 == lSavedStoerung.getMessage());

私の equals メソッドの理解ではassertEquals、最初の例で true を返すことはできないからです。assertTrueすべてのテストケースが正常に実行されています。

それとも何か間違ったことを理解しましたか?

4

2 に答える 2

22

テストが失敗した理由assertEqualsは、等値性が数値の値だけでなく、その型も考慮しているためです。object はajava.lang.Longとは比較になりません。equaljava.lang.Integer

lMessage.getNumber()を返すので、Java はに渡す前にそれをintラップします。そのため、代わりに次を使用してテスト ケースを修正できます。IntegerassertEqualsInteger.valueOf

assertEquals(Integer.valueOf(4321), lMessage.getNumber());
于 2013-07-04T10:53:56.707 に答える