我有一个Azure应用程序,最近对应用程序设置进行了操作。我意识到将几乎所有我需要的设置放入ServiceConfiguration中是显而易见的方法,可以选择任何你甚至可以远程想要改变的东西。这意味着Web服务URL,smtp主机信息等都在我的ServiceConfiguration中。
想象一下,当我做出改变之后,我试图运行200多个单元测试,但直接发现这个错误时,我感到很惊讶:
Why am I getting SEHException when calling RoleEnvironment.GetConfigurationSettingValue("MYKEY")?
显然,我在这里有几个选择......
- 我可以使用RoleEnvironment.IsAvailable()编写我自己的小类来检查我应该从哪里获取设置,如果我不是天蓝色的话,可以从app.config中获取它们。
- 我可以将我的应用程序部署到测试环境,只测试面向外部的接口。
但是有“内置”方式吗?是否有任何单元测试框架的更新,可以让我测试正在运行的确切代码(在将运行的环境中以及将部署的设置)?
答案 0 :(得分:6)
截至2012年6月Azure发布,您可以使用CloudConfigurationManager - 它会检查.cscfg和.csdef文件(如果可用),否则从app.config或Web.config的appSettings部分读取:
<configuration>
<appSettings>
<add key="Foo" value="Bar" />
</appSettings>
</configuration>
然后在代码中:
CloudConfigurationManager.GetSetting("Foo")
答案 1 :(得分:2)
答案 2 :(得分:2)
您可以在测试项目的[Assembly Initialise]上运行模拟器。
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