I try to run unit test some of my classes and have a problem where running tests individually works 100% of the time, but if I run them in bulk / using the "All tests in solution" option, every single test for one of my files comes out building with an error:
System.IO.FileLoadException was unhandled by user code Message=Could not load file or assembly 'Microsoft.Practices.Prism, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Source=ServicesModuleTests FileName=Microsoft.Practices.Prism, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null
I am trying to understand why for a long time and tried to search the Internet, but did not find anyone with this problem.
Here is a short example of my code:
Registry file:
public class RegistryService { protected ILoggerFacadeExtended _Logger { get; set; } protected IConnectivityService _Connectivity { get; set; } [ImportingConstructor] public RegistryService(ILoggerFacadeExtended logger, IConnectivityService connectivity) { this._Logger = logger; this._Connectivity = connectivity; } public string GetRegistryPath(RegistryHive hive, string path) { string registryPath = string.Format("{0}\\{1}", GetRegistryHiveString(hive), path.Trim('\\')); _Logger.DebugWithFormat("Found registry path: {0}", registryPath); return registryPath; } private string GetRegistryHiveString(RegistryHive hive) { switch (hive) { case RegistryHive.ClassesRoot: return "HKEY_CLASSES_ROOT"; case RegistryHive.CurrentConfig: return "HKEY_CURRENT_CONFIG"; case RegistryHive.CurrentUser: return "HKEY_CURRENT_USER"; case RegistryHive.DynData: return "HKEY_DYN_DATA"; case RegistryHive.LocalMachine: return "HKEY_LOCAL_MACHINE"; case RegistryHive.PerformanceData: return "HKEY_PERFORMANCE_DATA"; case RegistryHive.Users: return "HKEY_USERS"; } throw new ArgumentOutOfRangeException("hive"); } }
Test file:
private RegistryService CreateMockedRegistryService() { return new RegistryService(MockRepository.GenerateMock<ILoggerFacadeExtended>(), MockRepository.GenerateMock<IConnectivityService>()); } [TestMethod()] public void GetRegistryPathTest_ClassesRoot() { RegistryService target = CreateMockedRegistryService(); RegistryHive hive = RegistryHive.ClassesRoot; string path = @"Something\SomethingElse\"; string expected = @"HKEY_CLASSES_ROOT\Something\SomethingElse"; string actual; actual = target.GetRegistryPath(hive, path); Assert.AreEqual(expected, actual); } [TestMethod()] public void GetRegistryPathTest_CurrentConfig() { RegistryService target = CreateMockedRegistryService(); RegistryHive hive = RegistryHive.CurrentConfig; string path = @"Something\SomethingElse\"; string expected = @"HKEY_CURRENT_CONFIG\Something\SomethingElse"; string actual; actual = target.GetRegistryPath(hive, path); Assert.AreEqual(expected, actual); }
I omitted the code to try to show what I am doing without taking up too much space here. I can run them one after the other without any problems, but I get an exception when starting together.