구성을 저장하고 검색하는 방법과 같은 특정 문제를 처리하는 데 부담을주지 않으므로 개별적으로 테스트하기가 쉽기 때문에 우려 사항을 구분할 필요가 있습니다.
필요한 구성 데이터의 모델을 만들고이 모델을 (생성자를 통해) 종속성으로 허용하거나 구성 데이터가 충분히 간단하면 구성 요소의 몇 가지 속성 일 수 있습니다 그 자체.
구성 정보를 전송하기 위해 모델을 만드는 경우 사용자가 구성 가능한 값과 상호 작용할 수 있도록 응용 프로그램 부분에서 해당 개체를 사용하는 것이 더 쉽습니다. 앱을 구성하기위한 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과 귀하의 관리 설정이 분리됩니다. 이제 두 부분을 독립적으로 빌드하고 테스트 할 수 있습니다. DAL이 DAL에 초점을두고, 설정 관리자가 설정 관리에 집중하십시오.
앱을 구성하는 _UI는 자체적으로 별개의 기능입니다 ._ 의미하니? – enzom83
응용 프로그램의 복잡성에 따라 UI를 작성하는 데 상당한 시간을 할애하여 응용 프로그램을 쉽게 설정하고 응용 프로그램이 발전하면 쉽게 업데이트 할 수 있습니다. 따라서 어느 정도는 소프트웨어를 구성하는 소프트웨어를 소프트웨어의 다른 기능과 동일한 방식으로 취급합니다. – HackedByChinese
확인. 마지막으로, 당신은 무엇을 의미합니까? 필요한 구성 데이터의 모델을 생성하고이 모델을 (생성자를 통해) 종속으로 받아들이는 것이 현명 할 수 있습니다. – enzom83