Team System Testを使用している場合でも、NUnitを使用している場合でも、テスト用に個別のクラスライブラリを作成することをお勧めします。 App.configをテストプロジェクトに追加するだけで、コンパイル時に自動的にbinフォルダーにコピーされます。
コードが特定の構成テストに依存している場合、最初に作成するテストでは、構成ファイルが使用可能であることを検証します(そのため、私は正気ではないことがわかります)。
<configuration>
<appSettings>
<add key="TestValue" value="true" />
</appSettings>
</configuration>
そしてテスト:
[TestFixture]
public class GeneralFixture
{
[Test]
public void VerifyAppDomainHasConfigurationSettings()
{
string value = ConfigurationManager.AppSettings["TestValue"];
Assert.IsFalse(String.IsNullOrEmpty(value), "No App.Config found.");
}
}
理想的には、構成オブジェクトがクラスに渡されるようにコードを記述する必要があります。これにより、構成ファイルの問題から切り離されるだけでなく、さまざまな構成シナリオのテストを作成することもできます。
public class MyObject
{
public void Configure(MyConfigurationObject config)
{
_enabled = config.Enabled;
}
public string Foo()
{
if (_enabled)
{
return "foo!";
}
return String.Empty;
}
private bool _enabled;
}
[TestFixture]
public class MyObjectTestFixture
{
[Test]
public void CanInitializeWithProperConfig()
{
MyConfigurationObject config = new MyConfigurationObject();
config.Enabled = true;
MyObject myObj = new MyObject();
myObj.Configure(config);
Assert.AreEqual("foo!", myObj.Foo());
}
}