我在单元测试中有一套,如果我一起运行(使用重新共享工具),则会收到此错误:  SetUp:System.TypeInitializationException:类型的初始值设定项  “ FakeItEasy.Core.FakeScope”引发了异常。 ---->  System.IO.FileLoadException:API限制:程序集  '文件:/// C:\ Users \ abrown \ Documents \ Repos \ ink.services.jetstar \ My.Namespace.Tests.Unit \ bin \ Debug \ My.Namespace.dll'  已从其他位置加载。无法从加载  同一appdomain中的新位置。如果我单独运行它们,它们会通过。更进一步的例外是,它在像这样的行上失败了:[SetUp]public void SetUp(){ _myFake = A.Fake<ISomething>();编辑如果我使用“标准” NUnit测试运行程序,也会发生这种情况。正如@ david-arno在评论中所说,通过更改ReSharper运行程序中的设置,可以对其进行修复(显然仅用于重新共享)为了完整起见,这是完整的堆栈跟踪  My.CompanyNamespace.ProjectName.Tests.Unit.DownloadAndStoreContentTests.gets_content_downloader_for_each_section_in_index:  SetUp:System.TypeInitializationException:类型的初始值设定项  “ FakeItEasy.Core.FakeScope”引发了异常。 ---->  System.IO.FileLoadException:API限制:程序集  '文件:/// C:\ Users \ abrown \ Documents \ Repos \ My.CompanyNamespace \ My.CompanyNamespace.ProjectName.Tests.Unit \ bin \ Debug \ My.CompanyNamespace.ProjectName.dll'  已从其他位置加载。无法从加载  同一appdomain中的新位置。    在FakeItEasy.Core.FakeScope.get_Current()在  FakeItEasy.IoC.DictionaryContainer。 c_DisplayClass1 1.<Register>b__0(DictionaryContainer c) at FakeItEasy.IoC.DictionaryContainer.Resolve(Type componentType) at FakeItEasy.ServiceLocator.Resolve[T]() at FakeItEasy.RootModule.<RegisterDependencies>b__3(DictionaryContainer c) at FakeItEasy.IoC.DictionaryContainer.<>c__DisplayClass1 1.b_0(DictionaryContainer  c)在FakeItEasy.IoC.DictionaryContainer.Resolve(Type componentType)  在FakeItEasy.ServiceLocator.ResolveT在  FakeItEasy.RootModule.b_1a(DictionaryContainer  猫  FakeItEasy.IoC.DictionaryContainer。 c_DisplayClass1 1.<Register>b__0(DictionaryContainer c) at FakeItEasy.IoC.DictionaryContainer.Resolve(Type componentType) at FakeItEasy.ServiceLocator.Resolve[T]() at FakeItEasy.RootModule.<RegisterDependencies>b__19(DictionaryContainer c) at FakeItEasy.IoC.DictionaryContainer.<>c__DisplayClass1 1.b__0(DictionaryContainer  c)在FakeItEasy.IoC.DictionaryContainer.Resolve(Type componentType)  在FakeItEasy.ServiceLocator.ResolveT在FakeItEasy.A.FakeT在  My.CompanyNamespace.ProjectName.Tests.Unit.DownloadAndStoreContentTests.SetUp()  在  c:\ Users \ abrown \ Documents \ Repos \ My.CompanyNamespace \ My.CompanyNamespace.ProjectName.Tests.Unit \ DownloadAndStoreContentTests.cs:line  23  -System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName,String处的FileLoadException  codeBase,证据程序集安全性,运行时程序集locationHint,  StackCrawlMark&stackMark,IntPtr,pPrivHostBinder,布尔值  throwOnFileNotFound,用于自检的布尔值,布尔值  抑制在)  System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName  assemblyRef,证据assemblySecurity,RuntimeAssembly reqAssembly,  StackCrawlMark&stackMark,IntPtr,pPrivHostBinder,布尔值  throwOnFileNotFound,用于自检的布尔值,布尔值  抑制在)  System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName  assemblyRef,证据assemblySecurity,RuntimeAssembly reqAssembly,  StackCrawlMark&stackMark,布尔throwOnFileNotFound,布尔  forIntrospection,布尔抑制(SecuritySecuritys),位于  System.Reflection.RuntimeAssembly.InternalLoadFrom(字符串  assemblyFile,证据安全性证据,Byte [] hashValue,  AssemblyHashAlgorithm hashAlgorithm,用于自省的布尔值,布尔值  在以下位置抑制SecurityChecks,StackCrawlMark和stackMark)  System.Reflection.Assembly.ReflectionOnlyLoadFrom(字符串assemblyFile)  在  FakeItEasy.Core.ApplicationDirectoryAssembliesTypeCatalogue.GetAllAvailableAssemblies()  在FakeItEasy.Core.ApplicationDirectoryAssembliesTypeCatalogue..ctor()  在  FakeItEasy.ImportsModule.b_1(DictionaryContainer  猫  FakeItEasy.IoC.DictionaryContainer.SingletonResolver 1.UnresolvedState.Resolve(DictionaryContainer container) at FakeItEasy.IoC.DictionaryContainer.<>c__DisplayClass1 1.b_0(DictionaryContainer  c)在FakeItEasy.IoC.DictionaryContainer.Resolve(Type componentType)  在FakeItEasy.ServiceLocator.ResolveT在  FakeItEasy.ImportsModule.b_0(DictionaryContainer  猫  FakeItEasy.IoC.DictionaryContainer.SingletonResolver 1.UnresolvedState.Resolve(DictionaryContainer container) at FakeItEasy.IoC.DictionaryContainer.<>c__DisplayClass1 1.b_0(DictionaryContainer  c)在FakeItEasy.IoC.DictionaryContainer.Resolve(Type componentType)  在FakeItEasy.ServiceLocator.ResolveT在  FakeItEasy.ImportsModule.b_4 [T](DictionaryContainer  猫  FakeItEasy.IoC.DictionaryContainer.SingletonResolver 1.UnresolvedState.Resolve(DictionaryContainer container) at FakeItEasy.IoC.DictionaryContainer.<>c__DisplayClass1 1.b__0(DictionaryContainer  c)在FakeItEasy.IoC.DictionaryContainer.Resolve(Type componentType)  在FakeItEasy.ServiceLocator.ResolveT在  FakeItEasy.Core.FakeScope.RootScope..ctor()在  FakeItEasy.Core.FakeScope..cctor() 最佳答案 我认为这是因为:在启动时(或附近)FakeItEasy scans its working directory looking for DLLs that may include extension points,您在不同目录中有多个测试程序集,其中至少两个包含同一程序集的副本,并且测试运行程序在同一个AppDomain中运行每个测试程序集的测试并行运行测试程序集的原因不是由于并行性,而是因为测试运行程序随后将在单独的AppDomain中运行程序集。其他应该缓解的解决方法是在单独的AppDomain中运行程序集的测试(例如,使用NUnit的/domain=Multiple参数)或什至在单独的进程(/process=Multiple)中运行。我希望许多测试跑步者都支持这些选项。我没有ReSharper 8,但是我们正在努力使FakeItEasy更能容忍加载程序集的失败。我在FakeItEasy issue 189处添加了更多详细信息-感谢您提交。更新上述问题189已在FakeItEasy 1.15.0中修复。 Get it or a later version from NuGet!关于c# - 单元测试完全运行时失败-API限制:程序集已从其他位置加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19727000/
10-13 06:17