Методы тестирования, которые делают http-запросы - PullRequest
8 голосов
/ 15 июня 2009

В моем приложении есть несколько методов, которые делают http-запросы. Есть ли хороший способ симулировать сбои сети и плохие ответы для модульных тестов?

Ответы [ 7 ]

12 голосов
/ 15 июня 2009

Подходящий Макет объектов должен позволять вам легко выполнять такое моделирование; если вы не знакомы с концепцией, здесь есть хороший учебник .

1 голос
/ 16 июня 2009

Может быть Весенние тестовые макеты могут помочь.

1 голос
/ 15 июня 2009

Оберните библиотеку, которая выполняет HTTP-вызовы (например, java.net.URLConnection или Commons HttpClient), за интерфейсом, а затем напишите реализации или макеты этого интерфейса, который имитирует условия сбоя.

Ваш интерфейс может просто представлять операции, которые должно выполнять ваше приложение, а не весь диапазон функций клиента HTTP.

1 голос
/ 15 июня 2009

Вы пробовали HTTPUnit и JWebUnit ?

1 голос
/ 15 июня 2009

В случае сбоев в работе сети ничто не сравнится с первым, отсоединив компьютерный кабель Ethernet (или d / c от беспроводного), а затем отсоединив любой кабель, обеспечивающий доступ к облаку.

Если под неправильными ответами вы подразумеваете ошибки HTTP, вы можете написать ASP-сценарии, которые всегда будут выдавать определенные ошибки. Если вы хотите протестировать искаженные HTTP-пакеты, вам нужно написать простое приложение для сокетов.

0 голосов
/ 15 июня 2009

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

if (in_test) {
   response = get_test_response();
} else {
   response = make_http_request();
}

Затем вы можете настроить свои модульные тесты на некоторое значение, доступное для функции get_test_response (). Таким образом, вы можете программно изменить результат вызова.

0 голосов
/ 15 июня 2009

Выньте провод локальной сети или выключите беспроводной маршрутизатор во время выполнения запросов:)

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