В тестовом классе я хотел бы предоставить свою собственную перегрузку 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)
».