lundi 9 février 2015

Unit Testing Unity Configuration File "The type name or alias xxxx could not be resolved"

I want a simple unit test to verify that all Types in my unity configuration xml are valid



[TestMethod]
[TestCategory("IntegrationTest")]
[DeploymentItem(@"..\..\..\App\Unity.config", @"MyApp")]
public void VerifyTypeNamesForMyAppUnityConfig()
{
var fileMap = new ExeConfigurationFileMap {
ExeConfigFilename = @"MyApp\Unity.config"
};
var configuration = ConfigurationManager
.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");
var container = new UnityContainer();

container.LoadConfiguration(unitySection);
}


The Unity.config works when executing the App.


I have referenced all the assemblies in the Test project


I get this exception



Test Name: VerifyTypeNamesForMyAppUnityConfig
Test FullName: MyApp.Test.UnityTests.VerifyTypeNamesForMyAppUnityConfig
Test Source: c:\SourceControl\MyAppMerge\MyApp.Test\UnityTests.cs : line 47
Test Outcome: Failed
Test Duration: 0:00:00.5187389

Result Message:
Test method MyApp.Test.UnityTests.VerifyTypeNamesForMyAppUnityConfig threw exception:
System.InvalidOperationException: The type name or alias MyApp.Services.Attachments.AttachmentService, MyApp.Services.Attachments could not be resolved. Please check your configuration file and verify this type name.
Result StackTrace:
at Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolverImpl.ResolveType(String typeNameOrAlias, Boolean throwIfResolveFails)
at Microsoft.Practices.Unity.Configuration.RegisterElement.GetMappedType()
at Microsoft.Practices.Unity.Configuration.RegisterElement.ConfigureContainer(IUnityContainer container)
at Microsoft.Practices.Unity.Configuration.ContainerElement.<>c__DisplayClass1.<ConfigureContainer>b__0(ContainerConfiguringElement element)
at Microsoft.Practices.ObjectBuilder2.EnumerableExtensions.ForEach[TItem](IEnumerable`1 sequence, Action`1 action)
at Microsoft.Practices.Unity.Configuration.ContainerElement.ConfigureContainer(IUnityContainer container)
at Microsoft.Practices.Unity.Configuration.UnityConfigurationSection.Configure(IUnityContainer container, String configuredContainerName)
at Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer container, UnityConfigurationSection section, String containerName)
at Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer container, UnityConfigurationSection section)
at MyApp.Test.UnityTests.VerifyTypeNamesForMyAppUnityConfig() in c:\SourceControl\MyAppMerge\MyApp.Test\UnityTests.cs:line 61


The test PASSES If I make this change



var WTF = new List<AttachmentService>();
container.LoadConfiguration(unitySection);


But this FAILS like this



//var WTF = new List<AttachmentService>();
container.LoadConfiguration(unitySection);


WHY?


Aucun commentaire:

Enregistrer un commentaire