在测试类中,我想为自己的重载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>