我有以下测试方法:
[TestMethod]
public void TestHarvestMethod()
{
HarvestTargetTimeRangeUTC time = new HarvestTargetTimeRangeUTC();
time.StartTimeUTC = new DateTime(2008, 01, 01, 00, 00, 00, DateTimeKind.Utc);
time.EndTimeUTC = DateTime.UtcNow;
XElement lIntelexReport = XElement.Parse(rawXml);
Harvester target = new Harvester();
target.ConfigureHarvester((System.Configuration.Configuration)null);
var res = target.Harvest(time);
Console.WriteLine(res);
}
与此方法结合使用:
public void ConfigureHarvester(System.Configuration.Configuration configuration)
{
reportId = Int32.Parse(configuration.AppSettings.Settings["IncidentReport"].Value);
}
测试这个方法:
public XElement Harvest(HarvestTargetTimeRangeUTC ranges)
{
XElement lIntelexReport = IntelexServiceCall();
return XMLConversion(QueryData(ranges, lIntelexReport));
}
问题是我收到 Null Exception 错误,指出“对象引用未设置为对象的实例”。在这条线上:
reportId = Int32.Parse(configuration.AppSettings.Settings["IncidentReport"].Value);
我几乎肯定是由这里的空值引起的:
target.ConfigureHarvester((System.Configuration.Configuration)null);
上一行中的 System.Configuration 是本店常用的一种,但通常用于这样的方法:
public void ConfigureHarvester(System.Configuration.Configuration configuration)
{
context = new PlannedOutageFactorDataContext();
}
所以我的 reportid 字段显然是在寻找空值以外的东西,问题是我不知道它在寻找什么。我已经阅读了 System.Configuration 的 MSDN,但它确实没有帮助。如果有人能指出我正确的方向,我将不胜感激。