2013-06-14 2 views
2

У меня есть интерфейс и класс, который реализует этот интерфейс и переопределяет его метода:Как проверить интерфейс 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!!"); 
     } 
} 

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

+2

Серьезно, почему вы тратите свое время: вы ТОЛЬКО ПОСЛЕ ЭТОЙ http://stackoverflow.com/questions/17108142/how-can-i-test-an-interface –

+0

Тест не проходит? Ты уверен? Он даже не должен компилировать запрещенное использование ключевого слова 'interface'. – jlordo

+2

Вы действительно не «проверяете интерфейс». Вы проверяете его реализацию. Если вы хотите протестировать взаимодействие с этим интерфейсом, вам нужна такая насмешливая библиотека, как Mockito. – fge

ответ

1

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

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

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

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

+0

Спасибо, это сработало, и тестирование интерфейса - это работа, которую я ненавижу: D –

Смежные вопросы