Как проверить интерфейс Java?

У меня есть интерфейс и класс, который реализует этот интерфейс и переопределяет его методы:

public interface Intr {
public int method1();
public int method2();
}


public class example implements Intr{
@override
public int method1()
{
//stmts
}
@override
public int method2(){
//stmts
}
} 

я хочу создать тест JUnit для тестирования этого интерфейса без реализации класса в моем тесте, я использовал такой код:

public class TIntr {

    private Intr interface;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }

    @Test
    public Object testMethod1() {
        try{
        int result = interface.method1();
        assertEquals(something, result);
        }catch(Exception e){
        fail("Test Failed!!");
        }


        @Test
    public Object testMethod1() {
        try{
        int result = interface.method2();
        assertEquals(something, result);
        }catch(Exception e){
        fail("Test Failed!!");
        }
}

но тест всегда терпит неудачу, так как выполнение методов всегда генерирует нулевые значения, так как я не создал экземпляр из класса, только переменную из интерфейса типа.

1 ответ

Решение

Попробуйте использовать EasyMock. EasyMock создает макет объекта на основе интерфейса. Макет объекта реализует все методы интерфейса и для тех методов, которые вы указываете (например, с ожидаемым), он "воспроизводит" указанное поведение при их вызове.

Это должно быть что-то вроде:

Intr mockedDependency = createMock(Intr.class);
expect(mockedDependency.method1()).andReturn(100);

Хотя я не понимаю, почему вы тестируете интерфейс.

Другие вопросы по тегам