Изменение поведения, когда не RELEASE сборки - PullRequest
1 голос
/ 03 ноября 2011

Каков наилучший способ изменить поведение между сборками DEV, TEST и RELEASE?

У меня есть приложение, которое отправляет электронные письма получателям, хранящимся в базе данных.При разработке и тестировании я хотел бы переопределить желаемое поведение и отправить электронное письмо человеку, использующему приложение (например, разработчику или тестеру).

Когда мы пойдем в производство, я, конечно, хотел бы отправить егок электронному письму из базы данных.

Я рассмотрел добавление константы RELEASE в качестве , обсуждаемого здесь

Есть ли у кого-нибудь какие-либо советы о наилучшем способе достижения этого или предложениекак лучше подходить к проблеме?

Ответы [ 5 ]

4 голосов
/ 03 ноября 2011

Обернуть функцию отправки электронной почты с помощью интерфейса, скажем, INotifier.Send().Реализуйте его несколькими способами:

  • EmailNotifier : INotifier для выпуска (отправьте электронное письмо)

  • LocalNotifier : INotifier для отладки (запись в консоль)

  • MockNotifier : INotifier для теста (подтвердите некоторые условия)

Поместите тип класса в конфигурационную конфигурацию и прочитайте и вызовите его с помощью модуля отправки уведомлений,См. Преобразование Web.config .

.
1 голос
/ 04 ноября 2011

Я использую XmlPreprocess tool для манипулирования файлами конфигурации. Он использует один файл сопоставления для нескольких сред. Вы можете редактировать файл сопоставления в Excel. Это очень удобно.

1 голос
/ 03 ноября 2011

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

Чтобы сделать его простым и реалистичным, замена происходит в методе отправки электронной почты, а не в методах, вызывающих его. Первоначальный адрес заменяется непосредственно перед отправкой электронного письма, а после отправки электронного письма исходный адрес возвращается обратно.

1 голос
/ 03 ноября 2011

Если вы используете ASP.NET, у вас могут быть настройки web.config, которые меняются в зависимости от текущей конфигурации публикации.

http://msdn.microsoft.com/en-us/library/dd465318.aspx

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="MyDB" 
      connectionString="ReleaseSQLServer" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration>
0 голосов
/ 03 ноября 2011

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

...