2010-07-20 2 views
4

У меня есть приложение Azure, а недавно появилось gung-ho в настройках приложения. Я осознал, что практически все настройки, которые мне нужны в ServiceConfiguration, были очевидным способом пойти на все, что вы, возможно, даже отдаленно хотите изменить на лету; это означает, что URL-адреса веб-сервисов, информация о хостах smtp и т. д. - все это в моей ServiceConfiguration.Код единицы измерения для Azure

Представьте мое удивление, когда, после того, как я сделал мои изменения, я попытался запустить мои 200+ модульных тестов, только пороть прямо в эту ошибку:

Why am I getting SEHException when calling RoleEnvironment.GetConfigurationSettingValue("MYKEY")?

Очевидно, что у меня есть несколько вариантов здесь. ..

-Я могу написать свой собственный небольшой класс, используя RoleEnvironment.IsAvailable(), чтобы проверить, откуда я должен получать мои настройки, и получить их из app.config, если я не в лазуре.

- Я мог бы развернуть мое приложение в тестовой среде и просто проверить внешние интерфейсы.

Но есть ли «встроенный» способ? Есть ли какие-либо обновления для модульной системы тестирования, которые позволят мне проверить точный код, который выполняется (в пределах среды, в которой он будет запущен, и с настройками, которые будут развернуты)?

+0

Помогает ли это? http://andrewmatthewthompson.blogspot.nl/2011/12/deploying-packages-to-azure-compute.html вы можете протестировать хранилище с помощью этого: http://www.neovolve.com/post/2012/01/12 /Integration-testing-with-Azure-development-storage.aspx –

ответ

2

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

+0

Спасибо. Это тот же вывод, к которому я пришел. Я ценю подтверждение. – Steve

+0

Прочтите ответ Роба. По-моему, это работает очень хорошо. – SideFX

2

Вы можете запустить эмулятор в [Инициализация сборки] тестового проекта.

ProcessStartInfo start = new ProcessStartInfo 
{            
    Arguments = "/devstore:start",            
    FileName = @"C:\Program Files\Windows Azure Emulator\emulator\csrun.exe"       
}; 

для более двух ссылок может помочь http://andrewmatthewthompson.blogspot.nl/2011/12/deploying-packages-to-azure-compute.html

для тестирования памяти: http://www.neovolve.com/post/2012/01/12/Integration-testing-with-Azure-development-storage.aspx

+0

Это интересная идея! Благодарю. Вопрос был давно, поэтому я работал над приемлемым решением для себя, но это может быть полезно для кого-то другого, который хочет сделать то же самое и встретить этот вопрос в поиске. – Steve

6

По состоянию на июнь 2012 Azure релиз, вы можете использовать CloudConfigurationManager - он проверяет .cscfg и .csdef если это доступно, в противном случае читается из раздела appSettings файла app.config или Web.config:

<configuration> 
    <appSettings> 
    <add key="Foo" value="Bar" /> 
    </appSettings> 
</configuration> 

Затем в коде:

CloudConfigurationManager.GetSetting("Foo") 
+1

Я думаю, что это лучший подход – SideFX

+0

Работал, как ожидалось, спасибо за ответ. – morganw09dev

Смежные вопросы