ไม่ว่าคุณจะใช้การทดสอบระบบทีมหรือ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());
}
}