我有很多VS12解决方案,我正在使用MS Fakes编写单元测试.基于以下URL中的建议,我决定为我的假Dlls:@L_419_0@创建一个项目.
这个想法是虚假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(按设计)有一些不稳定的支持.
但最终,您的目标似乎是为您的测试项目节省几次点击,同时冒着假货失败同步的风险.它发生的可能性并不重要 – 可能不值得让你的测试不那么明确.
测试的目标是降低维护成本,因此隐藏事物对于他们而言不如普通代码那么重要;它只是增加了维护过程的步骤.对于大多数人来说,假货是晦涩的,没有额外的压力’哦,但它是间接引用的……这甚至有效吗?
总结以上是内存溢出为你收集整理的c# – 为什么假装没有从预建的Fakes项目中正确引用Fakes dll?全部内容,希望文章能够帮你解决c# – 为什么假装没有从预建的Fakes项目中正确引用Fakes dll?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)