1

ウィキペディアからの次の定義は、多層アプリケーションのデータ アクセス層とは何かを説明しています。

データ アクセス レイヤー (DAL) は、データベースなどのある種の永続ストレージに格納されたデータへの簡単なアクセスを提供するコンピューター プログラムのレイヤーです。

永続ストレージは 1 つ以上のファイルで構成することもできますが、上位層は、ファイル内の情報をどのように編成したかを知りません。app.configまたはのような構成ファイルを使用するアプリケーションがあるとしますweb.configapp.configファイルにはいくつかのパラメーターの値 (キャッシュの最大サイズなど) が含まれている可能性があるため、これらの値はアプリケーションの起動時にロードする必要があります。さらに、アプリケーションが UI を介してこれらのパラメーターの編集を許可している場合は、app.configファイルを更新する必要があります。これらの操作はDALの一部ですか?

4

1 に答える 1

2

構成がどこにどのように保存され、取得されるかなどの特定の懸念事項を処理する負担がかからないため、ピースを個別に簡単にテストできるため、懸念事項を少し分離することは賢明です。

必要な構成データのモデルを作成し、このモデルを (コンストラクターを介して) 依存関係として受け入れるか、構成データが十分に単純な場合は、コンポーネント自体のいくつかのプロパティにすることが賢明な場合があります。

構成情報を送信するモデルを作成する場合、ユーザーが構成可能な値を操作できるようにするアプリケーションの一部でそのオブジェクトを使用すると、より簡単に使用できます。アプリを構成するための UI は、それ自体が別の機能です。

これはばかげた例です。

public class Settings
{
    public string SettingOne { get; set; }

    public bool SettingTwo { get; set; }

}

public class DAL
{
    public Settings Settings { get; private set; }

    public DAL(Settings settings)
    {

    }
}

したがって、単体テストを使用する場合は、設定を管理する部分に煩わされることなく、必要な設定を与えることで DAL のみをテストできます (以下は、NUnit テストの軽薄な例です)。

[Test]
public void Should_do_something_important()
{
    // Arrange
    var dal = new DAL(new Settings { SettingOne = "whatever", SettingTwo = true });

    // Act
    var result = dal.DoSomethingImportant();

    // Assert
    Assert.That(result, Is.Not.Null);
}

これで、アプリケーションで、設定を管理する別のコンポーネントを作成できます (選択した場合... 設定は非常に単純であり、この追加の手順は不要です。それはあなた次第です)。これを完全にテストできます。独自の。

public class SettingsManager
{
     public Settings ReadSettings(string path)
     {
         // read from the store

     }

     public void WriteSettings(Settings settings, string path)
     {
        // write settings to the store
     }

}

そして別の軽薄なテスト:

[Test]
public void Should_write_settings_to_store()
{
    // Arrange
    var manager = new SettingsManager();

    // Act
    var settings = new Settings { SettingOne = "value", SettingsTwo = true };
    manager.WriteSettings(settings, @"C:\settings\settings.config");

    // Assert
    Assert.That(File.Exists(@"C:\settings\settings.config", Is.True));
}

アプリケーションで、次のようにしてそれらをまとめることができます。

protected DAL DAL { get; private set; }

public void Init()
{
      var manager = new SettingsManager();

      DAL = new DAL(manager.ReadSettings(@"C:\settings\settings.config"));
}

このルートに進む利点は、DAL であり、設定の管理が切り離されていることです。これで、2 つの部分を個別にビルドしてテストできます。DAL は DAL に集中し、設定マネージャーは設定の管理に集中します。

于 2012-02-28T00:14:22.380 に答える