2014-01-18 1 views
1

У меня есть конечный класс и с конструктором для этого ...Как издеваются конечный класс в Java с помощью EasyMock - тест Junit

У меня есть проблема издеваться этот класс. Я узнал, что я не могу использовать EasyMock для окончательного класса. Но в моем проекте я должен использовать только easymock. Есть ли способ издеваться над этим классом? Можете ли вы, пожалуйста, помочь мне в этом?

//A a = createMock(A.class);//IllegalException occuring while running this test case 


For example : 

final class A { 

private int a; 
    A(int a){ 
this.a = a; 
} 

} 
+0

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

+0

Почему классный выпуск в первую очередь? –

+0

его код клиента как окончательный класс. Так что я не могу изменить. До этого я борюсь – shree

ответ

6

Невозможно высмеять окончательный класс с помощью чистого EasyMock. Вам нужно будет добавить что-то вроде PowerMock, которое хорошо интегрируется с EasyMock. Или вы пишете тест, который не требует насмешки над последним классом.

1

Лучшее, о чем я могу думать, это то, что если ваш последний класс реализует любой интерфейс (учитывая, что интерфейс включает методы, которые необходимо использовать в вашем тесте), вы всегда можете создавать экземпляры другого класса, который реализует тот же интерфейс и используйте это как макет или используйте dynamic proxies.

Проблема в том, что иногда поиск обходных решений для требований будет экспоненциально умножать работу, требуемую для выполнения чего-либо, когда вы уже знаете, что такие инструменты, как PowerMock, находятся там.

+0

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

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