7

VS11 中的新 Fakes 框架允许您在单元测试项目中创建程序集引用的假(模拟或存根)实现。当一个程序集被伪造时,VS11 为每个伪造生成两个文件:

/FakesAssemblies/[Project].Fakes.dll
/FakesAssemblies/[Project].Fakes.xml

这些文件是否应该添加到源代码管理中?我的假设是否定的,因为它们是自动生成的,但想知道是否有人有其他意见。

4

2 回答 2

6

自动生成不应成为存储库中存在的区别因素。毕竟,各种自动生成的文件都经常出现在那里——例如设计器文件。

问题是,一直生成额外的假货组装可能很耗时。Microsoft 发布了有关如何尝试优化的指南:

Fakes 程序集的编译可以显着增加您的构建时间。您可以通过在单独的集中项目中为 .NET 系统程序集和第三方程序集生成 Fakes 程序集来最小化构建时间。由于此类程序集在您的机器上很少更改,因此您可以在其他项目中重用生成的 Fakes 程序集。

因此,很少更改的、基于 .NET FCL / 3rd 方的假程序集应该是存储库的一部分,以加快构建过程。基于您自己的代码的代码可能最好是动态生成的。

于 2012-04-06T10:15:59.043 回答
4

根据http://hamidshahid.blogspot.com.au/2012/11/microsoft-fakes-framework.html

每当编译项目时,都会生成“FakesAssemblies”文件夹及其中的所有文件。这很重要,因为如果您要为更改组件的装配添加假货,则 FakesAssemblies 的生成将确保所有更改都反映在生成的装配中。

同样在 GitHub 中,建议在 .gitignore 中排除它们

# Microsoft Fakes
FakesAssemblies

如果您担心构建期间的生成时间,您可以只指定您需要的内容并禁用存根

mscorlib.fakes:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0" />
  <StubGeneration Disable="true"/>
  <ShimGeneration>
    <Clear />
    <Add FullName="System.Environment"/>
    <Add FullName="System.TimeZoneInfo"/>
    <Add FullName="System.DateTime"/>
  </ShimGeneration>
</Fakes>
System.fakes:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System" Version="4.0.0.0"/>
  <StubGeneration Disable="true" /> 
  <ShimGeneration Disable="true" /> 
</Fakes>
于 2016-04-30T00:50:26.147 回答