3

次のテスト方法があります。

[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);

私がほぼ肯定的であるのは、ここの null 値が原因です。

target.ConfigureHarvester((System.Configuration.Configuration)null);

上記の行の System.Configuration は、このショップで一般的に使用されるものですが、通常は次のようなメソッド用です。

public void ConfigureHarvester(System.Configuration.Configuration configuration)
{
    context = new PlannedOutageFactorDataContext();            
}

したがって、私の reportid フィールドは明らかに null 値以外のものを探しています。問題は、何を探しているのか正確にわからないことです。System.Configuration の MSDN を読んだことがありますが、実際には役に立ちませんでした。誰かが私を正しい方向に向けることができれば幸いです。

4

2 に答える 2

3

これから必要な情報を抽出できるように、web.configまたはapp.config値のコピーを渡すように探しています(AppSettingsセクションにあります)。

例えば

<configuration>
    <appSettings>
        <add key="IncidentReport" value="1" />
    </appSettings> 
</configuration>

Webページをテストする場合、多くの場合、Webサービスからweb.configのコピーを取得できるように、Webサービスの場所を設定する必要があります。

コンソール/デスクトップアプリを開発している場合は、app.configファイルがあることを確認してください

または、を使用して手動で渡すことができます

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(exePath);
于 2012-07-09T20:10:02.027 に答える
2

テストアセンブリには、app.configファイルが必要です。このファイル内には、整数値を持つ「IncidentReport」という名前のキーが必要です。

于 2012-07-09T20:15:34.503 に答える