assertEquals
テストクラスでは、に依存しない特別なロジックを使用して、独自のオーバーロードを提供したいと思いObject.equals
ます。残念ながら、assertEquals
ローカルでメソッドを宣言するとすぐにJavaが静的インポートを検出しなくなるため、これは機能しませんorg.junit.Assert.*
。
これを回避する方法はありますか?つまり、静的にインポートされたメソッドに追加のオーバーロードを提供する方法はありますか?(かなり明白な解決策は、メソッドに別の名前を付けることですが、この解決策は同じ美的魅力を持っていません。)
私のテストクラスファイルは次のようになります。
package org.foo.bar;
import static org.junit.Assert.*;
import org.junit.Test;
public class BarTest {
private static void assertEquals(Bar expected, Bar other) {
// Some custom logic to test equality.
}
@Test
public void testGetFoo() throws Exception {
Bar a = new Bar();
assertEquals(42, a.getFoo()); // Error *
}
@Test
public void testCopyConstructor() throws Exception {
Bar a = new Bar();
// Fill a.
Bar b = new Bar(a);
assertEquals(a, b);
}
}
Error *
は「assertEquals(Bar, Bar)
型のメソッドBarTest
は引数には適用できません(int, int)
。」</p>