首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moq单元测试: System.TypeInitializationException on Moq.Proxy.CastleProxyFactory

Moq单元测试: System.TypeInitializationException on Moq.Proxy.CastleProxyFactory
EN

Stack Overflow用户
提问于 2016-09-13 12:53:11
回答 3查看 6.2K关注 0票数 2

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

似乎很难找到温莎城堡图书馆,因为它给了我这个错误:

代码语言:javascript
复制
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()

这是触发错误的测试之一。代码运行得很好。正是Moq库触发了错误,因为由于某些原因,它似乎无法找到城堡温莎库。

代码语言:javascript
复制
    [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");
    }

这是我那个项目的包

代码语言:javascript
复制
<?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>

这些测试以前效果很好。我不知道是什么改变了他们现在抛出这个错误。

也许安装了4.6.1 .net框架?

请帮帮我!

EN

回答 3

Stack Overflow用户

发布于 2016-09-13 14:13:43

您的错误消息是:

Version=3.3.0.0,System.IO.FileNotFoundException :不可能的充电器和组装的Castle.Core,Culture=neutral,PublicKeyToken=407dd0808d44fbdc‘ou une de ses .可供参考。

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

代码语言:javascript
复制
<package id="Castle.Core" version="3.3.3" targetFramework="net461" />
  1. 确定单元测试项目和代码都使用了程序集的正确版本吗?
  2. 在App.config文件中有任何程序集绑定重定向吗?https://stackoverflow.com/a/31013829/283787
  3. 它们都使用相同的NuGet包吗?
  4. 否则,您可以使用FusionLogger查看程序集是如何被解析的。
票数 7
EN

Stack Overflow用户

发布于 2017-05-11 11:21:23

  1. 检查包文件夹并删除所有未使用的all。
  2. 比较Package.Config文件与App.Config文件,并确保版本机器
票数 -1
EN

Stack Overflow用户

发布于 2017-01-16 13:20:30

我遇到了一个与您的问题非常相似的问题,唯一的区别是我已经构建了一个自定义库来在我的解决方案中生成几个假的业务模拟,以便在另一个测试中重用它。

我不知道如何在我的一个单元测试项目中出现一个旧版本的Moq的dll作为参考。

这就是解决我问题的原因:

  1. 删除测试项目中的所有Moq NuGet包,检查包文件以确保没有留下用于Moq和城堡的包配置。
  2. 检查您的测试项目引用,以确保没有遗留引用也被遗忘。如果没有做好正确的事情,那么将其移除。
  3. 关闭Visual并导航到解决方案目录,并查找名为"packages“的文件夹。检查是否有一个名为Moq的文件夹。如果是的话,删除它。
  4. 通过Package控制台或"Manage“选项为依赖于Moq库的每个测试项目重新安装Moq包。
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39470613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档