Moq单元测试:Moq.Proxy.CastleProxyFactory上的System.TypeInitializationException

Lud*_*c C 2 c# castle-windsor moq

我正在使用Moq作为我的单元测试的模拟库.

它似乎很难找到Castle Windsor库,因为它给了我这个错误:

System.TypeInitializationException : Une exception a été levée par l'initialiseur de type pour 'Moq.Mock`1'.
  ----> System.TypeInitializationException : Une exception a été levée par l'initialiseur de type pour 'Moq.Proxy.CastleProxyFactory'.
  ----> System.IO.FileNotFoundException : Impossible de charger le fichier ou l'assembly 'Castle.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' ou une de ses dépendances. Le fichier spécifié est introuvable.
   à Moq.Mock`1.<InitializeInstance>b__24_0()
   à Moq.PexProtector.Invoke(Action action)
   à Moq.Mock`1.InitializeInstance()
   à Moq.Mock`1.OnGetObject()
   à Moq.Mock.GetObject()
   à Moq.Mock.get_Object()
   à Moq.Mock`1.get_Object()
   à TecLib.Common.Tests.Infrastructure.CqrsRepositoryBaseTest.SetUp() dans C:\Users\Ludovic\Documents\Visual Studio 2015\Projects\TEC2\TecLib.Common.Tests\Infrastructure\CqrsRepositoryBaseTest.cs:ligne 38
--TypeInitializationException
   à Moq.Proxy.CastleProxyFactory..ctor()
   à Moq.Mock`1..cctor()
--FileNotFoundException
   à Moq.Proxy.CastleProxyFactory..cctor()
Run Code Online (Sandbox Code Playgroud)

这是触发错误的测试之一.代码工作得非常好.这是Moq图书馆触发错误,因为它似乎无法找到Castle Windsor图书馆出于某种原因.

    [SetUp]
    public void SetUp()
    {
        _eventStore = new Mock<IEventStore>();
        _eventDispatcher = new Mock<IEventDispatcher>();
        _entityFactory = new Mock<IEntityFactory>();

        _repository = new CqrsAddressRepository(_entityFactory.Object, _eventStore.Object, _eventDispatcher.Object);
        _addressInfo1 = new AddressInfo("400 chemin Jette", "", "", "Farnham", "J0J2B0", "Quebec", "Canada");
        _addressInfo2 = new AddressInfo("322 rue Principale E", "", "", "Farnham", "J2N1L7", "Quebec", "Canada");
    }
Run Code Online (Sandbox Code Playgroud)

这些是我的项目包

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Castle.Core" version="3.3.3" targetFramework="net461" />
  <package id="Castle.Windsor" version="3.3.0" targetFramework="net461" />
  <package id="Moq" version="4.5.21" targetFramework="net461" />
  <package id="NUnit" version="3.4.1" targetFramework="net461" />
</packages>
Run Code Online (Sandbox Code Playgroud)

这些测试之前完美无缺.我不知道发生了什么变化让他们现在抛出这个错误.

也许安装4.6.1 .net框架?

请帮忙!

ope*_*hac 7

您的错误消息说:

System.IO.FileNotFoundException:不可能充电器le fichier ou l'assembly'Castle.Core,Version = 3.3.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc'ou une desesdépendances.Lefichierspécifiéestintrouvable.

但是,您的包具有以下配置:

<package id="Castle.Core" version="3.3.3" targetFramework="net461" />
Run Code Online (Sandbox Code Playgroud)
  1. 您确定您的单元测试项目和代码都使用了正确的程序集版本吗?
  2. 你的App.config文件中是否有任何程序集绑定重定向?/sf/answers/2170968061/
  3. 他们都使用相同的NuGet包吗?
  4. 如果不能使用FusionLogger来查看程序集是如何解决的.