Модульное тестирование для загрузок - PullRequest
4 голосов
/ 22 января 2010

Я пишу программу на Java, которая загружает, а затем обрабатывает множество веб-страниц. Какова наилучшая практика для тестирования компонента программы, который загружает страницу, не затрагивая удаленные серверы?

Ответы [ 4 ]

1 голос
/ 22 января 2010

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

После того, как вы это сделаете, вы протестируете обрабатывающую часть, однако имеет смысл. Пусть компонент процессора принимает InputStream или даже просто String в качестве входных данных.

Что касается части загрузки, вам, вероятно, нужен интеграционный тест. Интеграционные тесты часто намного сложнее и требуют настройки локального веб-сервера (это может сделать maven) или, по крайней мере, использование файла: URL.

1 голос
/ 22 января 2010

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

Преимущество этого подхода состоит в том, что вы можете выполнять модульное тестирование на произвольном количестве сайтов. Ваш сетевой кеш / http прокси будет многократно использоваться для будущего использования.

1 голос
/ 22 января 2010

Одной мыслью было бы использовать «InputStream» в качестве объекта, который вы передаете в свой код обработки. Я полагаю, что класс HttpClient (или эквивалентный) для чтения данных через HTTP дает некоторый поток для чтения ответа. Для тестирования вы можете просто заменить другой тип потока для чтения, например, локальный FileStream.

0 голосов
/ 25 января 2010

Выезд Внедрение зависимостей
Это техника, в которой вы «внедряете» различные «зависимости» в свои функции вместо того, чтобы начинать их с вашей функции (просто объяснение).

Прочитайте статью Мартина Фаулерса о DI
. http://martinfowler.com/articles/injection.html

надеюсь, что это поможет
/ Jonas

...