構成ファイルからデータをロードできる.Netをテストする必要はありません。
代わりに、独自のロジックのテストに集中してください。
コンストラクターから (またはプロパティを介して) 構成値を取得するようにクラスを変更し、他の依存関係と同じようにテストします。
途中で、クラスもSRPに移行しました。
構成の読み込みに従って、このロジックを別の非静的クラスに集中させます。
編集:
構成ロジックを別のクラスに分離します。このようなもの:
public static class ConfigurationLoader
{
static ConfigurationLoader()
{
// Dependency1 = LoadFromConfiguration();
// Dependency2 = LoadFromConfiguration();
}
public static int Dependency1 { get; private set; }
public static string Dependency2 { get; private set; }
}
次に、クラスをインスタンス化するときに、依存関係を注入します。
public class MyClass
{
private readonly int m_Dependency1;
private readonly string m_Dependency2;
public MyClass(int dependency1, string dependency2)
{
m_Dependency1 = dependency1;
m_Dependency2 = dependency2;
}
public char MethodUnderTest()
{
if (m_Dependency1 > 42)
{
return m_Dependency2[0];
}
return ' ';
}
}
public class MyClassTests
{
[Fact]
public void MethodUnderTest_dependency1is43AndDependency2isTest_ReturnsT()
{
var underTest = new MyClass(43, "Test");
var result = underTest.MethodUnderTest();
Assert.Equal('T', result);
}
}
...
var myClass = new MyClass(ConfigurationLoader.Dependency1, ConfigurationLoader.Dependency2);
引き続き IOC コンテナーを使用することもできますが、MyClass をさまざまな入力でテストするという問題は、この単純なテスト可能な設計によって解決されます。