Модульное тестирование веб-API с использованием HttpServer или HttpSelfHostServer

Я пытаюсь выполнить модульное тестирование для проекта веб-API. Я собираюсь смоделировать среду размещения веб-API. Похоже, я мог бы использовать хост в памяти (HttpServer) или собственный хост (HttpSelfHostServer).

Просто интересно, в чем разница и какая технология для чего хороша, и есть ли какие-либо ограничения для этих вариантов.


person Stay Foolish    schedule 05.02.2013    source источник


Ответы (1)


Вы должны использовать хост в памяти для сквозных тестов, а затем отдельно протестировать сетевое подключение вашей среды.

По ряду причин:

  • Хост в памяти, как следует из названия, работает полностью в памяти, поэтому будет намного быстрее.

  • Самостоятельный хост должен запускаться с повышенными привилегиями, поэтому ваши тесты должны выполняться в контексте учетной записи «администратор». Это далеко не желательно. Это особенно проблематично, если вы хотите выполнять тесты, например, из скриптов сборки или из PowerShell, поскольку в результате эти процессы также должны запускаться с повышенными привилегиями. Более того, это должно произойти на любом из серверов, на которых вы тестируете.

  • При самостоятельном размещении вы в конечном итоге тестируете сетевой стек данной операционной системы, что на самом деле не следует тестировать, поскольку он может различаться в разных средах (разработка, подготовка, контроль качества, производство и т. д.). Например, данный порт может быть недоступен. В результате вы можете быть втянуты в ненужные усилия по отладке на разных машинах даже для того, чтобы запустить тесты.

  • Наконец, тестирование с использованием собственного хостинга по-прежнему не гарантирует, что служба будет работать правильно при размещении в Интернете и наоборот, поэтому вы можете просто протестировать в памяти.

person Filip W    schedule 05.02.2013
comment
Вам не нужны привилегии администратора для запуска собственного хоста. Вы должны добавить config.HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.Exact; для запуска без прав администратора, если вы слушаете локально. - person RaghuRam Nadiminti; 05.02.2013
comment
Рекомендую использовать Owin TestServer. ссылка: juliencorioland.net/archives / - person Youngjae; 29.07.2014
comment
Если вы используете HttpSelfHostServer, вы можете писать тесты таким образом, что вы просто меняете URL-адрес, и ваш тест может запускаться на ваших серверах разработки/стадии. - person tymtam; 06.05.2016