我正在测试使用app.config文件加载配置属性的.NET应用程序(.exe).单元测试应用程序本身没有app.config文件.
当我尝试对使用任何配置属性的方法进行单元测试时,它们返回null.我假设这是因为单元测试应用程序不会加载到目标应用程序的app.config中.
有没有办法覆盖这个或我是否必须编写脚本将目标app.config的内容复制到本地app.config?
这篇帖子有点问这个问题,但作者真的从一个不同的角度来看待它.
编辑:我应该提一下,我正在使用VS08 Team System进行单元测试.
好吧,我正在进入这个梦幻般的网站,并提出了将配置设置注入应用程序组件的正确方法的问题.因此,概述是:我有一个用C#.Net 3.5编写的应用程序.它由3个程序集组成 - 核心,数据和服务.数据和服务程序集需要从app.config检索的设置,这可以通过设置文件完成,例如.
代码:
public static String RequestQueueConnectionString
{
get { return ConnectionSettings.Default.RequestQueueConnectionString; }
}
Run Code Online (Sandbox Code Playgroud)
配置:
<applicationSettings>
<MyNamespace.Data.ConnectionSettings>
<setting name="RequestQueueConnectionString" serializeAs="String">
...
Run Code Online (Sandbox Code Playgroud)
现在,程序集都是使用StructureMap for IoC进行设置的 - 我认为应该提供我正在寻找的答案,但我只是看不到它!
IoC:
public static void ConfigureStructureMap(IContainer container)
{
container.Configure(x => ...
...
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是注入一个已经填充到IoC容器中的配置类,以便这些设置用于该程序集,而不是设置文件/ app.config中指定的那些设置.所以也许:
public static void ConfigureStructureMap(IContainer container, MyConfigClass config)
{
container.Configure(x => x.For<DataConfig>()
.Singleton()
.Use ???
...
Run Code Online (Sandbox Code Playgroud)
我希望我在这里提供了足够的细节 - 如果我没有,请原谅一个新手,请让我知道还有什么有助于回答这个问题!
使用Primitve类型或复杂类型有哪些优缺点?
什么时候应该使用复杂类型的原始类型,反之亦然?
即:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public int IQ { get; set; }
}
public void FooPrimitiveTypes (string firstName, string lastName, int age, int IQ)
{
}
public void FooComplexTypes(Person person)
{
}
Run Code Online (Sandbox Code Playgroud)