Unit tests pass fine if run one at a time, FileLoadException when running "All Tests in Solution"

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.

+4
source share
1 answer

I realized this by unloading other unit test projects and then running the tests until it worked, apparently one of them used some old prism references, and these files were included instead of the updated ones, the problem is now resolved after I deleted and read the links.

+1
source

Source: https://habr.com/ru/post/1396456/


All Articles