単体テストを実行すると、構成ファイルが正しく読み取られません。ただし、コンソールアプリケーションコンテキストから実行する場合は、構成ファイルが読み取られます。
以下のコードでは、割り当て後にvarセクションにアクセスすると、テストTestIoCInit()を実行するとnullになり、コンソールアプリケーションからInitIoC()を呼び出すとnullになりません。
[TestMethod]
public void TestIocInit()
{
InitIoC();
}
internal static void InitIoC()
{
IUnityContainer unityContainer = new UnityContainer(); // the host app domain creates the unity container and pass it to the resolver, the resolver is a static member of IoC class, thus the container is static
ServiceLocator.SetLocatorProvider(unityContainer);
var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(unityContainer);
var unityResolver = new UnityDependencyResolver(unityContainer);
IoC.Initialize(unityResolver);
new IoCTypeRegistrationTask(unityContainer).Execute();
}
あなたの助けに感謝!