単体テストに問題があります。問題は、Sitecore を使用していることです。これについて私が尋ねた別の質問は次のとおりです:ユニット テスト Sitecore LicenseManager
私の問題は、例外が発生することです:
Test method foo.Bar.Framework.Tests.Core.UnitTest1.TestMethod1 threw exception:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'Sitecore.Services.Heartbeat' threw an exception. ---> System.InvalidOperationException: Could not read Sitecore configuration.
dotPeek を使用してコードを調べたところ、関数 Sitecorre.Configuration.Settings.GetSetting("HeartbeatInterval") が例外をスローしました。設定を読み取れないためです。同じコードを単体テストの .cs ファイルに追加してテストをデバッグすると、構成を読み取ることができます。設定は app.config でも利用できます
参照されているアセンブリは構成を読み取れず、テスト自体は読み取れるようです。どうすればこれを修正できますか?
編集
Settings.GetSetting() 関数は最終的に Sitecore.Configuration.ConfigReader.GetConfigNode() を使用します。この関数は、最終的に次の関数を使用します。
private static ConfigReader GetReader()
{
return ConfigurationManager.GetSection("sitecore") as ConfigReader;
}
だから...参照されたdllがConfigurationManagerを介してapp.configを読み取れないのはなぜですか?