実際に問題の単体テストテストを追加したかったので、System.Xml.XmlConfiguration.XsltConfigSection.get_LimitXPathComplexity()
hereの情報源を調べました。それから私は、この小さなユニットテストを作成しました:
[TestMethod]
public void TestMethod1()
{
XsltConfigSection section = System.Configuration.ConfigurationManager.GetSection("system.xml/xslt") as XsltConfigSection;
Assert.IsNull(section);
}
これは誤った構成の不満、私はより具体的な例外をもたらした:
Test method FooBarTest.UnitTest1.TestMethod1 threw exception:
System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize --->
System.Configuration.ConfigurationErrorsException: Unrecognized configuration section "userSettings".
(C:\Users\MyUserName\AppData\Local\Microsoft_Corporation\UnitTestAdapter__Running__StrongName_upyrcu25zoxkptlqai01cl4s0dwzhuof\14.0.23107.0\user.conf
問題は、または「user.config」ファイルにありました私のWindows 7(64ビット)上:
<configuration>
<userSettings>
<MyNamespace.MyAppXY.Properties.Settings>
<setting name="LastPosition" serializeAs="String">
<value>1234</value>
</setting>
</MyNamespace.MyAppXY.Properties.Settings>
</userSettings>
</configuration>
これらのユーザー設定は、ユニットテストでは、完全に異なる、無関係なソリューションにより、数ヶ月前に書かれた、間接的に使用して:
Settings.Default.LastPosition = 1234;
Settings.Default.Save();
"user.settings"ファイルに設定部分がありません:<configSections><sectionGroup name="userSettings" ...>
が奇妙です。 "user.settings"ファイルを削除してSettings.Default.Save();
を含む単体テストを再生すると、悪い "user.settings"ファイルが正しい形式で正確なパスに戻されます。
ただし、 "user.settings"ファイルを作成し、今度はすべてのユニットテストを異なる独立したソリューションで実行しました。
これは、この問題が存在する理由は正確ではありませんが、問題の解決策または回避策です。この問題の解決策へのアプローチは、私が思っている単体テストの問題だけでなく、「未知の構成セクション」に関連する問題に一般化することができます。
問題がC#ステートメント(this siteにあります)に続く問題を引き起こしている構成ファイルを見つけるのに便利です。ちょうどあなたのユニットテストのデバッグ中に「イミディエイトウィンドウ」でそれらを評価しよう:
System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None).FilePath
<path to my unit test proj>\bin\Debug\TestMetaDataEvaluator.dll.config
System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath
C:\Users\MyUserName\AppData\Local\Microsoft_Corporation\UnitTestAdapter__Running__StrongName_upyrcu25zoxkptlqai01cl4s0dwzhuof\14.0.23107.0\user.config
System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.PerUserRoaming).FilePath
C:\Users\MyUserName\AppData\Roaming\Microsoft_Corporation\UnitTestAdapter__Running__StrongName_upyrcu25zoxkptlqai01cl4s0dwzhuof\14.0.23107.0\user.config
私はそれが私を助けたとして、これは、あなたを助けることができると思います。