2012-01-12 62 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元素有關。