C# Azure的单元测试代码

C# Azure的单元测试代码,c#,unit-testing,azure,C#,Unit Testing,Azure,我有一个Azure应用程序,最近在应用程序设置上下了很大的功夫。我意识到,将几乎所有我需要的设置都放到服务配置中,这是一种显而易见的方式,可以实现任何你甚至可能远程想要动态更改的东西;这意味着web服务URL、smtp主机信息等都在我的服务配置中 想象一下,当我做了更改后,我试图运行200多个单元测试,却直接遇到了这个错误时,我会有多么惊讶: 显然,我有几个选择 -我可以使用roleenEnvironment.IsAvailable()编写自己的小类,以检查我应该从哪里获取设置,如果我不在az

我有一个Azure应用程序,最近在应用程序设置上下了很大的功夫。我意识到,将几乎所有我需要的设置都放到服务配置中,这是一种显而易见的方式,可以实现任何你甚至可能远程想要动态更改的东西;这意味着web服务URL、smtp主机信息等都在我的服务配置中

想象一下,当我做了更改后,我试图运行200多个单元测试,却直接遇到了这个错误时,我会有多么惊讶:

显然,我有几个选择

-我可以使用roleenEnvironment.IsAvailable()编写自己的小类,以检查我应该从哪里获取设置,如果我不在azure中,则从app.config获取设置

-我可以将我的应用程序部署到测试环境中,只需测试面向外部的接口


但是否有一种“内置”方式?单元测试框架是否有任何更新,可以让我测试正在运行的确切代码(在它将运行的环境中,并使用将部署的设置)?

据我所知,测试框架中没有内置的方法来测试应该使用哪个版本的配置设置。我正在使用一个像您描述的那样的包装类(我相信您已经知道它很容易编写),但主要是为了我们可以在dev fabric之外运行我们的网站。

您可以在测试项目的[Assembly Initialise]上运行模拟器

ProcessStartInfo start = new ProcessStartInfo 
{                                             
    Arguments = "/devstore:start",                                             
    FileName = @"C:\Program Files\Windows Azure Emulator\emulator\csrun.exe"                        
};
更多信息,这两个链接可能会有所帮助


要测试存储:

自2012年6月Azure发行版起,您可以使用-检查.cscfg和.csdef文件(如果可用),否则从app.config或Web.config的appSettings部分读取:

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

谢谢这也是我得出的结论。谢谢你的确认。这有帮助吗?您可以用这个测试存储:这是一个有趣的想法!谢谢这个问题是很久以前提出来的——因此,我已经为自己找到了一个可以接受的解决方案——但是这对其他人来说可能是很有价值的,他们希望做同样的事情,并且在搜索中遇到这个问题。我认为这是最好的方法
CloudConfigurationManager.GetSetting("Foo")