Удалить зависимости для юнит-тестов - PullRequest
2 голосов
/ 21 ноября 2011

Я хочу выполнить модульное тестирование своего кода без зависимости от того, работает ли серверная часть и работает ли она на моем движке приложений Google. Каков наилучший способ достичь этого, не создавая собственную реализацию каждого класса, такого как фабрика запросов и т. Д.

Вот мой код. Я взломал класс Util, чтобы он возвращал макет MyRequestFactory при запуске модульных тестов. Затем эта фиктивная фабрика возвращает ложную реализацию MyRequest.
Это, в свою очередь, имеет фиктивные реализации методов создания, обновления, удаления и т. Д. Проблема в том, что у меня есть еще много сущностей, с которыми мне нужно это сделать, и в результате я получу огромное количество ложных уроков.

Есть ли более простой способ? Как вы думаете, какие рамки для насмешки подойдут лучше всего?

MyRequestFactory requestFactory = Util.getRequestFactory(mContext,
                                                         MyRequestFactory.class);

final MyRequest request = requestFactory.myRequest();       

BookProxy bookProxy = request.create(BookProxy.class);
bookProxy.setDescription(bookDescription.getText().toString());
bookProxy.setName(bookName.getText().toString());

Log.i(TAG, "Adding book" + bookProxy.toString());

Request<bookProxy> sendRequest = request.updateBook(bookProxy);

sendRequest.fire();

bookName.setText("");
bookDescription.setText("");

Ответы [ 3 ]

2 голосов
/ 21 ноября 2011

Я предпочитаю Mockito для насмешек, поскольку это позволяет шпионам и ожиданию / проверке после выполнения.

Также, Powermock позволяет такие вещи, как насмешливые статические методы и вызовыконструкторы.

2 голосов
/ 21 ноября 2011

Мне очень повезло с JMockit . Я пробовал JMock раньше, и хотя это сработало, это немного неуклюже. Mockito / EasyMock с расширением PowerMock просты в использовании, но они мешают нашему инструменту покрытия кода.

2 голосов
/ 21 ноября 2011

EasyMock прост в использовании.Но если вы реализуете слишком много фиктивных классов для модульного тестирования, это может указывать на проблему в вашем проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...