Тесты NUnit, которые вызывают .DLL, которые вызывают веб-службы WCF (.NET C #) - PullRequest
2 голосов
/ 11 ноября 2009

Это в некоторой степени относится к:

InvalidOperationException при создании экземпляра веб-службы wcf

У меня есть библиотека классов .NET C # (DLL), которая вызывает веб-службу WCF. Кажется, что любой .exe, который вызывает этот .DLL, теперь должен иметь конфигурации веб-службы в своем файле .EXE.config.

Так, например, если я пишу тест NUnit, мне нужно обновить файл NUnit.exe.config с помощью параметров веб-службы. Кажется, что это может быть очень трудно управлять. Я что-то упустил здесь? Есть какие-нибудь ярлыки? Если у меня есть десятки сервисов WCF и десятки тестов NUnit, кажется, что мой NUnit.exe.config был бы ужасным.

Спасибо

Нил Уолтерс

Ответы [ 2 ]

5 голосов
/ 11 ноября 2009

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

В приложении может оказаться более удобным передавать параметры (например, адрес и привязку) на уровень WCF явным образом программно - оставляя на усмотрение приложения возможность использовать собственную конфигурацию или нет.


EDIT - расширение первой точки.

Смысл WCF в том, чтобы взять интерфейс и предоставить реализацию, которая выполняется где-то еще (через универсальный тип Channel). В модульном тестировании вы хотите иметь возможность заменить сгенерированную WCF реализацию на интерфейс локальным макетом.

Изолируйте использование Channel в методе, который можно переопределить или заменить в тестовом жгуте и который возвращает объект типа интерфейса. Затем в модульных тестах поменяйте местами свой собственный метод, который вместо этого возвращает макет.

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

5 голосов
/ 11 ноября 2009

Нет, вы ничего не упускаете. В .NET конфигурация по умолчанию оставлена ​​для хост-приложения - в ASP.NET веб-среда выполнения и ее файл конфигурации - web.config.

В библиотеке классов это приложение хостинга, которое использует библиотеку классов, которая отвечает за предоставление конфигурации через свой app.config (-> YourApp.exe.config после компиляции).

Что вы могли бы сделать, это перенести разделы web.config для WCF в отдельные файлы * .config, а затем снова сослаться на них в вашем testapp.exe.config:

  <system.serviceModel>
    <extensions configSource="extensions.config" />
    <behaviors configSource="behaviors.config" />
    <bindings configSource="bindings.config" />
    <client configSource="client.config" />
    <services configSource="services.config" />
  </system.serviceModel>

К сожалению, вы можете только экспортировать разделы конфигурации, но не конфигурацию группы разделов <system.serviceModel> - это группа разделов конфигурации :-(, поэтому вы не можете использовать ее глобально).

Марк

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