Как проверить интерфейс 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);
Хотя я не понимаю, почему вы тестируете интерфейс.