加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么假装没有从预建的Fakes项目中正确引用Fakes dll?

发布时间:2020-12-15 21:55:26 所属栏目:百科 来源:网络整理
导读:我有一个问题,试图从单独的项目中引用mscorlib假DLL,如下所述. 我有很多VS12解决方案,我正在使用MS Fakes编写单元测试.基于以下URL中的建议,我决定为我的假Dlls:Code generation,compilation,and naming conventions in Microsoft Fakes创建一个项目. 这个
我有一个问题,试图从单独的项目中引用mscorlib假DLL,如下所述.

我有很多VS12解决方案,我正在使用MS Fakes编写单元测试.基于以下URL中的建议,我决定为我的假Dlls:Code generation,compilation,and naming conventions in Microsoft Fakes创建一个项目.
这个想法是虚假DLL的位置将被本地化,我不需要在我的测试项目中散布许多伪造的DLL. (我将这称为普通的假货库.)

在我目前的单元测试中,我使用了来自PresentationCore,System.Management和System的填充程序.但是,我正在使用的系统填充实际上是在mscorlib.dll中,更具体地说是Convert(静态类)和DriveInfo(密封类).因为我只需要mscorlib中的这两个类(现在)我为mscorlib创建了以下.fakes文件:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <StubGeneration>
    <Clear/>    
  </StubGeneration>
  <ShimGeneration>
    <Clear/>
    <Add FullName="Convert"/>
    <Add FullName="DriveInfo"/>
  </ShimGeneration>
</Fakes>

对于PresentationCore和SystemManagement,我有类似的.fakes文件清除然后按名称添加类.

但是,在我的测试项目中,当我从常见的fakes库中添加mscorlib.4.0.0.0.Fakes DLL的引用时,使用Convert和DriveInfo填充程序的测试不会运行.相反,测试方法抛出Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException,命名不受支持的shimmed类.使用PresentationCore和System.Management功能的测试在引用公共假货库时仍然有效.

但是,如果我在我的测试项目中直接为System添加Fakes程序集(和mscorlib间接),在我的测试项目中创建完全相同的mscorlib.fakes文件,并添加对本地mscorlib.4.0.0.0.Fakes Dll的引用,在没有故障的情况下链接到公共假货库时抛出异常的测试.

我使用对象浏览器查看了常见伪造库中的mscorlib伪造DLL,并将其与本地构建的DLL进行了比较,它们看起来是相同的.

有没有人知道为什么在共同的假货库中引用mscorlib假不起作用?

解决方法

关于Fakes的事情是,它意味着在每个构建上重新生成dll.这对系统dll来说不那么重要,但值得记住.您应该将它们保留在项目中,因为您无法确定它们之间的链接如何用于填充.

我不知道垫片是如何实现的,但是它们在运行时明显覆盖了方法.我认为我们需要一个开发人员更详细地回答它,但它甚至可能是mscorlib的问题,mscorlib已经对Fakes(按设计)有一些不稳定的支持.

但最终,您的目标似乎是为您的测试项目节省几次点击,同时冒着假货失败同步的风险.它发生的可能性并不重要 – 可能不值得让你的测试不那么明确.

测试的目标是降低维护成本,因此隐藏事物对于他们而言不如普通代码那么重要;它只是增加了维护过程的步骤.对于大多数人来说,假货是晦涩的,没有额外的压力’哦,但它是间接引用的……这甚至有效吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读