0

単体テストに問題があります。問題は、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を読み取れないのはなぜですか?

4

1 に答える 1

0

*.testsettings であることが判明しました。私のPCで実行したときは機能しましたが、ビルドサーバーでは機能しませんでした。*.testsettings をコミットして /testsettings パラメータを含める必要があることがわかりました

于 2012-07-23T07:49:21.490 に答える