我的单元测试有问题。问题是:我正在使用 Sitecore。我问的另一个问题是:Unit Testing 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?