メソッドJunit4
を静的にインポートするテストケースがあります。org.junit.Assert.assertEquals
import static org.junit.Assert.assertEquals;
このクラスでは、equalsを実装していない(また、実装に苦労している)いくつかの複雑な内部クラスをアサートするためのユーティリティメソッドを作成しました。
private void assertEquals(MyObj o1, MyObj o2)
{
assertEquals(o1.getSomething(), o2.getSomething());
assertEquals(o1.getSomethingElse(), o2.getSomethingElse());
...
}
インポートしているメソッドを「オーバーロード」しているようにコードが動作することを期待していましたが、静的にインポートされたメソッドassertEquals
を非静的なプライベートメソッドが隠しているようです。また、メソッドをpublic
and static
(すべての順列)に変えようとしましたが、成功しませんでした。名前を変更する必要がありました。
それがこのように動作する理由は何ですか?ドキュメントでこの動作への参照を見つけることができませんでした。