Edw*_*ard 6 c# unit-testing microsoft-fakes visual-studio-2012
我正在使用Microsoft Fakes测试框架.由于我无法改变的"遗留"代码,我需要使用垫片/鼹鼠方法,因此没有多少方法.它是来自没有源代码的供应商的代码,它是在没有测试的情况下编写的.所以我坚持使用3种可能的框架,TypeMock(昂贵的),Telerik的JustMock(昂贵的)或微软的Fakes.由于我们已经拥有VS Ultimate,我们选择了假货.由于大多数人认为他们需要建议以某种方式重写或修改代码以支持使用接口和/或依赖注入,我将事先告诉你,这不是一个选项.
我遇到的一个问题是我试图伪造的库是巨大的,需要使用64位版本的fakes.exe而不是32位(fakes.x86.exe),它会遇到32位应用程序的内存限制.
第二个问题是我需要使用v4.5框架编译fakes库.虽然没有记录,但可以通过命令行完成.原因是在v4.5中,他们在System.Collections.Generic中添加了IReadOnly*接口,并且库使用它们.使用v4进行编译时,会抛出错误,指出未找到类型,如预期的那样.
问题是,Visual Studio总是使用x86版本和v4.0框架,我找不到覆盖它的方法.有谁知道如何使用64位和v4.5框架?我目前的想法是不使用visual studio的内置东西,只需使用命令行并手动引用该文件.然后在每次更新dll时,我们将手动重新创建它并更新引用.此文件不会经常更新,因此这是可能的.
我用来手动生成fakes库的命令行(有人可能会觉得这很有用)是:
"c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\fakes\fakes.exe" <assembly> /tfv:v4.5
Run Code Online (Sandbox Code Playgroud)
help命令只显示v2,v3.5和v4是tfv的可能选项,但只是为了踢,我尝试了v4.5.
我已经尝试将应用程序上的体系结构强制为x64而不是任何cpu,没有更改它运行的fakes.exe.在.csproj文件中查找测试,没有变化.在.csproj文件中看到fakes.exe,它说使用框架的v4,在visual studio中打开,改为v4.5,编译得很好.使用fakes命令行,编译好了.项目中的.fakes文件中有一个属性允许定义编译器版本,但是将其设置为v4.5仍然不起作用.我假设Visual Studio中从v4到v4.5的版本更改也改变了程序集引用.我的下一个尝试是尝试更改模板项目,如果我能找到它.
| 归档时间: |
|
| 查看次数: |
5536 次 |
| 最近记录: |