0

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

4

1 回答 1

0

原来是 *.testsettings。当我在我的电脑上运行它时,它可以工作,但在构建服务器上却没有。结果我只需要提交 *.testsettings 并包含 /testsettings 参数

于 2012-07-23T07:49:21.490 回答