Team System TestまたはNUnitを使用しているかどうかにかかわらず、ベスト プラクティスは、テスト用に別のクラス ライブラリを作成することです。 Test プロジェクトに 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());
}
}