Я бы хотел, чтобы тестовый класс JUnit 4 реализовывал тот же интерфейс, что и класс, который он тестирует. Таким образом, по мере изменения интерфейса (и мы будем на ранней стадии разработки), компилятор гарантирует, что соответствующие методы будут добавлены в тестовый класс. Например:
public interface Service {
public String getFoo();
public String getBar();
}
public class ServiceImpl implements Service {
@Override public String getFoo() { return "FOO"; }
@Override public String getBar() { return "BAR"; }
}
public class ServiceTest implements Service {
@Override
@Test
public String getFoo() {
//test stuff
}
@Override
@Test
public String getBar() {
//test stuff
}
}
Когда я пытаюсь это сделать, я получаю сообщение об ошибке: «java.lang.Exception: метод getFoo () должен быть void»,
предположительно потому что методы испытаний должны возвращать void. Кто-нибудь знает как-нибудь обойти это?