構成がどこにどのように保存され、取得されるかなどの特定の懸念事項を処理する負担がかからないため、ピースを個別に簡単にテストできるため、懸念事項を少し分離することは賢明です。
必要な構成データのモデルを作成し、このモデルを (コンストラクターを介して) 依存関係として受け入れるか、構成データが十分に単純な場合は、コンポーネント自体のいくつかのプロパティにすることが賢明な場合があります。
構成情報を送信するモデルを作成する場合、ユーザーが構成可能な値を操作できるようにするアプリケーションの一部でそのオブジェクトを使用すると、より簡単に使用できます。アプリを構成するための 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 に集中し、設定マネージャーは設定の管理に集中します。