2012-01-12 59 views
2

我有一个包含我的DAL,程序集和单元测试项目的3项目解决方案。我正在使用ReSharper。单元测试带App.Config的C#程序集返回异常

以下领域,我DAL,对象SectionHandler返回NULL:

public static DatabaseFactorySectionHandler SectionHandler = 
     (DatabaseFactorySectionHandler) ConfigurationManager.GetSection("DatabaseFactoryConfiguration"); 

这是从工厂类线。另一个从它继承的类尝试从其构造函数初始化该字段。

我记得我需要将我的App.config文件添加到我的单元测试项目(它指向Machine.config)。但是,它并没有解决问题。我得到什么,而不是尝试运行我的测试时是:

>  failed: Configuration system failed to initialize System.Configuration.ConfigurationErrorsException: Configuration 
> system failed to initialize ---> 
> System.Configuration.ConfigurationErrorsException: Unrecognized 
> configuration section section. 
> (C:\projects\MyAssembly.Tests\bin\Debug\MyAssembly.Tests.dll.temp.config 
> line 3) 

我不明白的是配置文件的命名。在我的目录中,我可以看到App.config已正确更名(MyAssembly.Tests.dll.config),但没有temp.config的标志。

这里是我的app.config(这是目前什么是我的测试项目,还有没有其他App.configs的溶液)

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="DatabaseFactoryConfiguration" type="MyClass.DatabaseFactorySectionHandler, MyClass.DBConnector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    </configSections> 
    <connectionStrings> 
    <clear/> 
    <add name="Connector1" providerName="MyProvider" connectionString="myConnString" /> 
    <add name="DB2Connector" providerName="IBM.Data.DB2" connectionString="myConnString2" /> 
    </connectionStrings> 

    <DatabaseFactoryConfiguration Name="MyClassHere" ConnectionStringName="Connector1" /> 
    <DatabaseFactoryConfiguration Name="MyOtherClassHere" ConnectionStringName="DB2Connector" /> 
</configuration> 

为什么我不能让单元测试项目识别我的配置文件?谢谢。

+0

你使用什么单元测试框架? NUnit的? MSTest的? – Bernard 2012-01-12 20:51:47

+0

这是NUnit。我提到了ReSharper,因为当我尝试运行NUnit时,起初我遇到了有关多个配置文件的奇怪错误。描绘它是一个单独的问题,我暂停它然后试图运行它们。那是我碰到上述编译器错误的时候。 – 2012-01-12 20:54:54

回答

1

原来,这个问题与app.config文件中有多个DatabaseFactoryConfiguration元素有关。