我有很多单元测试,我使用Microsoft Fakes来填充Microsoft.Win32.RegistryKey。当我在本地机器上运行构建时,单元测试通过了。但是如果我在构建机器上运行它,单元测试将失败,并且这些测试会出现以下错误。
System.TypeLoadException:无法加载类型 汇编中的'Microsoft.Win32.Fakes.ShimRegistryKey' 'mscorlib.4.0.0.0.Fakes,Version = 4.0.0.0,Culture = neutral, 公钥= 0ae41878053f6703' 。
奇怪的是,我的本地机器和构建机器都是64位,单元测试项目的目标是AnyCPU。构建机器上是否可能缺少某些配置?
答案 0 :(得分:0)
在多个单独的单元测试项目中使用Shims时,我遇到了类似的问题。显然,生成的垫片可以覆盖每个或类似的东西。
以下是我按照说明修复它的说明: 滚动到此页面的中间:https://msdn.microsoft.com/en-us/library/hh708916.aspx
它在优化构建时间的标题下,但也用它来解决您的问题。
由于此类程序集在您的计算机上很少更改,因此您可以在其他项目中重用生成的Fakes程序集。
从单元测试项目中,您可以简单地引用已放置在项目文件夹中的FakesAssemblies下的已编译Fakes程序集。
使用.NET运行时版本匹配创建新的类库 你的测试项目。我们称之为Fakes.Prebuild。除掉 来自项目的class1.cs文件,不需要。
添加对所需的所有系统和第三方程序集的引用 假货。并生成假货,如果你愿意,编辑.fakes文件, 并构建以生成假装配。
从单元测试项目中确保您有参考 到Fakes运行时DLL:C:\ Program Files \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.QualityTools.Testing.Fakes.dll
然后,对于您创建Fakes for的每个程序集,添加一个 引用相应的DLL文件 您项目的Fakes.Prebuild \ FakesAssemblies文件夹。 (这个文件夹 在编译时创建)
确认您需要通过浏览添加引用 生成假装配..