无论您使用的是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());
}
}